Documentant públicament les tasques internes #898 - OAuth binding between media.exo.cat and farga.exo.cat i #900 document OAuth binding from peertube to farga .
https://media.eXO.cat - Peertube i https://farga.eXO.cat
Des de l’implementació de farga.exo.cat l’estem fent servir com a proveïdor de SSO per serveis eXO (veure per exemple Com activo el CI en farga.eXO.cat?).
Per la Battlemesh v15 al 2023, de la qual la eXO ha sigut sponsor fiscal, vam decidir executar un projecte que teníem aparcat des fa molt de temps, que era canviar l’antic servei de vídeos per un Peertube propi.
La motivació ha sigut que les eines per executar la Battlemesh v15 eren 100% lliures, excepte el servei de streaming, que anava a ser privatiu.
Seguint la línia d’autenticar serveis nous contra https://farga.eXO.cat, abans de donar accés a l’equip de la Battlemesh ens mirem l’autenticació amb OAuth.
Autenticació OAuth amb Peertube (esborrany, documentació sobre la marxa adjustada)
- instal·lem el plugin auth-oauth2 (
Administració / Plugins/Themes / Search
):https://media.exo.cat/admin/plugins/search?pluginType=1&search=auth-oauth2
- cal configurar-lo, per això calen les credencials de app del forgejo (o qualsevol proveïdor OAuth2)
- per crear les credencials de app del forgejo cal la redir URL, no la veig documentada a les settings
- trobo el README: GitHub - codifyglobal/peertube-plugin-auth-oauth2: A PeerTube server plugin that adds support for external authentication via an OAuth 2.0 provider.
- és: PeerTube
- genero les credencials de app de forgejo amb aquesta URL de redirecció
- la config del plugin peertube necessita més endpoints, no me’n recordo com són i els miro aquí: OAuth2 provider - Docs
En aquest moment, si no canviem res més els logs diuen:
Auth method oauth2 of plugin peertube-plugin-auth-oauth2 did not provide a valid username
Revisem a la documentació de gitea/forgejo com és la implementació específica de OAuth2 i canviem els valors de forma acorde. Entenem que a la config del plugin de Peertube required for AWS Cognito
també és required for pretty much anything, així que millor activar-la directament:
Amb aquesta config funciona correctament:
Coses a revisar
Si es fa servir un proveïdor d’OAuth2 different a gitea/forgejo, cal revisar la documentació del proveïdor OAuth2, en particular els scopes
, les URLs i el nom dels camps en l’endpoint userinfo
.
El mateix aplica per qualsevol altre servei, per exemple discourse(!)
Activant OAuth a Discourse
- Cal instal·lar i activar el plugin GitHub - discourse/discourse-oauth2-basic: A basic OAuth2 plugin for use with Discourse
- Crear l’aplicació al proveïdor OAuth, l’adreça de redireccionament ha de ser:
https://agora.exo.cat/auth/oauth2_basic/callback
(es troba al README del plugin) - I configurar al plugin els secrets i el ID de l’aplicació, així com els altres camps: