mod.wp-sso — SSO desde WordPress¶
Community · Categoría integration (desactivable)
Qué hace¶
Permite que un usuario ya autenticado en WordPress entre a Didacta sin volver a iniciar sesión. El plugin de WordPress (incluido en el módulo: didacta-sso.php) firma un JWT HS256 corto (email, nombre, caducidad ≤ 5 min, jti único) y redirige al callback de Didacta, que verifica firma, issuer, audiencia y TTL, resuelve al usuario por email (creando un alumno si no existe y el auto-provisionado está activo) y emite la sesión.
Cómo funciona¶
- El token es de un solo uso: el
jtise marca como consumido (anti-replay, en Redis con fallback en memoria). - El secreto HMAC solo lo conocen WordPress y Didacta; nunca viaja al navegador.
- Los emails se normalizan (trim + lowercase) antes de resolver el usuario.
- La redirección final usa la base web endurecida (
WEB_PUBLIC_URL/ allowlist), nunca el headerHost— evita open-redirect con exfiltración de tokens. - En WordPress:
DIDACTA_SSO_SECRETyDIDACTA_SSO_CALLBACKenwp-config.php, y el botón vía shortcode[didacta_sso_button].
Dependencias¶
Ninguna.
Modelo de datos¶
Sin tablas propias: el único estado (el jti consumido) es efímero y vive en Redis. Los usuarios se crean/resuelven en la tabla de usuarios del core.
API¶
GET /modules/wp-sso/:tenantSlug/status— config pública (para el auto-redirect del signin).GET /modules/wp-sso/:tenantSlug/callback?token=— intercambio del token por sesión (302).- Configuración admin en
/admin/sso/wp/config(Community, sin capability).
Eventos¶
Emite: wp-sso.signin.success, wp-sso.user.provisioned, wp-sso.account.linked. No consume.
Configuración¶
Por tenant desde el panel (Administración → SSO → WordPress): secreto compartido (cifrado), issuer/audience opcionales, auto-provisionado y auto-redirect.