Halo
Halo es una plataforma autohospedada de sitios web y blogs. Su plugin OAuth2 agrega inicio de sesión con GitHub, GitLab, Gitee y un proveedor personalizado llamado SSO. Con Casdoor como proveedor SSO, los usuarios inician sesión en Halo con su cuenta de Casdoor.
Crear la aplicación en Casdoor
-
En la consola de administración de Casdoor, abra la organización de sus usuarios y agregue una aplicación, o abra una existente.
-
Agregue el callback del proveedor SSO a Redirect URLs:
https://halo.example.com/login/oauth2/code/ssoUse la URL pública de Halo, sin
/console. La última parte,sso, es el ID fijo del proveedor personalizado. -
En la pestaña OIDC/OAuth, establezca Token format en
JWT-Standard. Halo luego toma el nombre de usuario depreferred_usernamey el nombre para mostrar dename. Con el formato predeterminadoJWT, elnamedel token de ID es el nombre de usuario, por lo que también se convierte en el nombre para mostrar. -
Guarde, y anote el Client ID y el Client secret.
Instalar el plugin OAuth2
- En la consola de Halo, instale OAuth2 认证 desde la tienda de aplicaciones, o descargue el JAR desde las releases de plugin-oauth2 y súbelo en la gestión de plugins. Use la versión 1.7.1 o posterior del plugin, que requiere Halo 2.20.0 o posterior.
- Habilite el plugin.
Configurar el proveedor SSO
-
En la consola de Halo, vaya a 用户 (Usuarios) y haga clic en 身份认证 (Autenticación) en la esquina superior derecha. Las versiones anteriores llaman al botón 认证方式.
-
Abra SSO y complete 自定义单点登录 OAuth 配置:
Field Value Client ID <your-client-id>Client Secret <your-client-secret>Authorization Url https://door.example.com/login/oauth/authorizeToken Url https://door.example.com/api/login/oauth/access_tokenUserInfo Url https://door.example.com/api/userinfoScopes openid profile emailUserName Attribute subIssuer URI https://door.example.comJWK Set URI https://door.example.com/.well-known/jwks<your-client-id>,<your-client-secret>: Los valores de la aplicación de Casdoor.- Scopes: Con
openid, el plugin inicia sesión con OpenID Connect y verifica el ID token. Luego necesita Issuer URI y JWK Set URI. - UserName Attribute: La reclamación (claim) que vincula la cuenta de Halo al usuario de Casdoor.
subes el ID de usuario de Casdoor, que no cambia cuando se renombra al usuario. - Issuer URI: Debe ser exactamente el
issuermostrado enhttps://door.example.com/.well-known/openid-configuration.
-
Guarde y active el proveedor de SSO.
El plugin envía el secreto del cliente mediante autenticación básica HTTP, que Casdoor acepta.
Permitir el registro de nuevos usuarios
Lo que sucede en el primer inicio de sesión depende de la versión de Halo:
- Halo 2.26.0 y versiones posteriores piden al usuario que vincule una cuenta existente de Halo o que registre una nueva. El registro requiere tener activado 开放注册 (registro abierto) y un 默认角色 (rol predeterminado) configurado en los ajustes de usuario de Halo. Halo toma el nombre de usuario de
preferred_username, en minúsculas. Si tiene menos de 4 caracteres o no es un nombre de usuario válido para Halo, este utiliza un nombre aleatoriouser-en su lugar. - Las versiones anteriores solo permiten iniciar sesión a los usuarios que han vinculado Casdoor a su cuenta de Halo. Un usuario inicia sesión en Halo con contraseña y vincula SSO en los ajustes de autenticación de su perfil.
Verificar el resultado
- Abra
https://halo.example.com/loginen una ventana privada del navegador. La página de inicio de sesión muestra un botón para el proveedor de SSO. - Haga clic en él e inicie sesión en Casdoor. Halo inicia sesión al usuario o, en Halo 2.26.0 y versiones posteriores, pide a un nuevo usuario que vincule o registre una cuenta.
Solución de problemas
| Symptom | Cause and fix |
|---|---|
Halo returns to /login?oauth2_error | Halo shows no reason on the page. Look for Failed to authentication with OAuth2 in the Halo log, which names the cause. |
The log shows missing_signature_verifier | Scopes contains openid, but JWK Set URI is empty. Fill it in. |
Saving fails with scope contains invalid characters | Plugin versions before 1.7.1 accept only one scope. Upgrade the plugin. |
Casdoor shows Redirect URI: ... doesn't exist in the allowed Redirect URI list | Halo builds the callback from halo.external-url. Set it to the public URL of Halo, and add the URL from the error to Redirect URLs. |
| Sign-in fails with an issuer error | Issuer URI differs from the issuer in Casdoor's discovery document. Set origin in Casdoor's conf/app.conf to its public URL and use the same value. |
| A new user sees that registration is closed | Turn on 开放注册 and set 默认角色 in Halo, or have the user bind an existing account. |
Vea también
- plugin-oauth2 en GitHub
- Users en la documentación de Halo
- Visión general de tokens