Saltar al contenido principal

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​

  1. En la consola de administración de Casdoor, abra la organización de sus usuarios y agregue una aplicación, o abra una existente.

  2. Agregue el callback del proveedor SSO a Redirect URLs:

    https://halo.example.com/login/oauth2/code/sso

    Use la URL pública de Halo, sin /console. La última parte, sso, es el ID fijo del proveedor personalizado.

  3. En la pestaña OIDC/OAuth, establezca Token format en JWT-Standard. Halo luego toma el nombre de usuario de preferred_username y el nombre para mostrar de name. Con el formato predeterminado JWT, el name del token de ID es el nombre de usuario, por lo que también se convierte en el nombre para mostrar.

  4. Guarde, y anote el Client ID y el Client secret.

Instalar el plugin OAuth2​

  1. 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.
  2. Habilite el plugin.

Configurar el proveedor SSO​

  1. 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 认证方式.

  2. Abra SSO y complete 自定义单点登录 OAuth 配置:

    FieldValue
    Client ID<your-client-id>
    Client Secret<your-client-secret>
    Authorization Urlhttps://door.example.com/login/oauth/authorize
    Token Urlhttps://door.example.com/api/login/oauth/access_token
    UserInfo Urlhttps://door.example.com/api/userinfo
    Scopesopenid profile email
    UserName Attributesub
    Issuer URIhttps://door.example.com
    JWK Set URIhttps://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. sub es el ID de usuario de Casdoor, que no cambia cuando se renombra al usuario.
    • Issuer URI: Debe ser exactamente el issuer mostrado en https://door.example.com/.well-known/openid-configuration.
  3. 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 aleatorio user- 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​

  1. Abra https://halo.example.com/login en una ventana privada del navegador. La página de inicio de sesión muestra un botón para el proveedor de SSO.
  2. 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​

SymptomCause and fix
Halo returns to /login?oauth2_errorHalo 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_verifierScopes contains openid, but JWK Set URI is empty. Fill it in.
Saving fails with scope contains invalid charactersPlugin versions before 1.7.1 accept only one scope. Upgrade the plugin.
Casdoor shows Redirect URI: ... doesn't exist in the allowed Redirect URI listHalo 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 errorIssuer 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 closedTurn on 开放注册 and set 默认角色 in Halo, or have the user bind an existing account.

Vea también​