Halo
Halo est une plateforme auto-hébergée de sites web et de blogs. Son plugin OAuth2 ajoute la connexion avec GitHub, GitLab, Gitee et un fournisseur personnalisé appelé SSO. Avec Casdoor comme fournisseur SSO, les utilisateurs se connectent à Halo avec leur compte Casdoor.
Créer l'application dans Casdoor
-
Dans la console d'administration de Casdoor, ouvrez l'organisation de vos utilisateurs et ajoutez une application, ou ouvrez-en une existante.
-
Ajoutez le callback du fournisseur SSO aux Redirect URLs :
https://halo.example.com/login/oauth2/code/ssoUtilisez l'URL publique de Halo, sans
/console. La dernière partie,sso, est l'ID fixe du fournisseur personnalisé. -
Sur l'onglet OIDC/OAuth, définissez Token format sur
JWT-Standard. Halo récupère alors le nom d'utilisateur à partir depreferred_usernameet le nom d'affichage à partir dename. Avec le format par défautJWT, le champnamedu jeton d'identification est le nom d'utilisateur, il devient donc aussi le nom d'affichage. -
Enregistrez, et notez le Client ID et le Client secret.
Installer le plugin OAuth2
- Dans la console Halo, installez OAuth2 认证 depuis l'app store, ou téléchargez le JAR depuis les versions de plugin-oauth2 et téléversez-le dans la gestion des plugins. Utilisez la version 1.7.1 ou ultérieure du plugin, qui nécessite Halo 2.20.0 ou ultérieur.
- Activez le plugin.
Configurer le fournisseur SSO
-
Dans la console Halo, allez dans 用户 (Users) et cliquez sur 身份认证 (Authentication) en haut à droite. Les versions antérieures appellent ce bouton 认证方式.
-
Ouvrez SSO et remplissez 自定义单点登录 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>: Les valeurs provenant de l'application Casdoor.- Scopes : Avec
openid, le plugin connecte les utilisateurs via OpenID Connect et vérifie le jeton d'identification. Il a ensuite besoin de Issuer URI et JWK Set URI. - UserName Attribute : La revendication qui lie le compte Halo à l'utilisateur Casdoor.
subest l'ID utilisateur Casdoor, qui ne change pas lorsque l'utilisateur est renommé. - Issuer URI : Doit être exactement l'
issueraffiché surhttps://door.example.com/.well-known/openid-configuration.
-
Enregistrez, et activez le fournisseur SSO.
Le plugin envoie le client secret avec une authentification HTTP Basic, que Casdoor accepte.
Permettre l'inscription des nouveaux utilisateurs
Ce qui se passe lors de la première connexion dépend de la version de Halo :
- Halo 2.26.0 et ultérieur demande à l'utilisateur de lier un compte Halo existant ou d'en enregistrer un nouveau. L'enregistrement nécessite que 开放注册 (open registration) soit activé et qu'un 默认角色 (default role) soit défini dans les paramètres utilisateur de Halo. Halo récupère le nom d'utilisateur à partir de
preferred_username, en minuscules. S'il est inférieur à 4 caractères ou sinon non valide comme nom d'utilisateur Halo, Halo utilise un nom aléatoire commençant paruser-à la place. - Les versions antérieures ne connectent que les utilisateurs ayant lié Casdoor à leur compte Halo. Un utilisateur se connecte à Halo avec un mot de passe et lie SSO dans les paramètres d'authentification de son profil.
Vérifier le résultat
- Ouvrez
https://halo.example.com/logindans une fenêtre de navigation privée. La page de connexion affiche un bouton pour le fournisseur SSO. - Cliquez dessus et connectez-vous à Casdoor. Halo connecte l'utilisateur, ou sur Halo 2.26.0 et ultérieur, demande à un nouvel utilisateur de lier ou d'enregistrer un compte.
Dépannage
| 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. |
Voir aussi
- plugin-oauth2 sur GitHub
- Users dans la documentation Halo
- Aperçu des tokens