Authentification unique (OpenID Connect)¶
HouseCairn authentifie les personnes auprès de n’importe quel fournisseur OpenID Connect ; aucun n’est nommé dans le code. L’authentification unique reste désactivée tant que OIDC_SERVER_URL n’est pas définie (ADR 0007).
Chez le fournisseur, créez un client (une application) de type web, avec le flux par code d’autorisation et cette URI de redirection, pour une instance à l’adresse
housecairn.example.com:https://housecairn.example.com/accounts/oidc/oidc/login/callback/
Le second
oidcestOIDC_PROVIDER_ID,oidcpar défaut.Dans
deploy/production.env:OIDC_SERVER_URL=https://id.example.com OIDC_CLIENT_ID=housecairn OIDC_CLIENT_SECRET=<secret given by the provider> HOUSECAIRN_BOOTSTRAP_ADMIN_EMAIL=admin@example.com
OIDC_SERVER_URLest l’émetteur (issuer) : HouseCairn lit/.well-known/openid-configurationsous cette adresse.OIDC_PROVIDER_NAMEest le nom du fournisseur, par exempleCompany SSO(Single sign-onpar défaut) ; la page de connexion affiche un bouton par fournisseur, sous le formulaire, libellé « Continuer avec » suivi de ce nom. Un clic dessus mène directement au fournisseur, sans page de confirmation intermédiaire.Redémarrez le conteneur, puis connectez-vous aussitôt avec l’adresse définie dans
HOUSECAIRN_BOOTSTRAP_ADMIN_EMAIL, que le fournisseur doit avoir vérifiée.
Qui obtient un compte¶
Première connexion d’une nouvelle instance : tant que l’instance n’a jamais eu de compte, la première identité qui se connecte en devient l’administratrice ; avec
HOUSECAIRN_BOOTSTRAP_ADMIN_EMAIL, seule cette adresse vérifiée le peut.Ensuite, avec
HOUSECAIRN_OIDC_SIGNUP=closed(le défaut), une identité sans compte est refusée, avec une page qui invite à contacter l’administrateur. Avecopen, toute personne que le fournisseur accepte obtient un compte, sans droits d’administration.Adresses invitées : une identité dont l’adresse a une invitation en attente pour un logement obtient un compte, sans droit d’administration, si le fournisseur atteste que l’adresse est vérifiée (
email_verifiedvauttrue).Un compte local existant n’est jamais repris par une identité qui en partage seulement l’adresse : connectez-vous avec le compte local, puis liez l’identité depuis les pages du compte.
Exiger l’authentification unique pour un logement¶
Seul l’administrateur de l’instance déclare les fournisseurs, par les variables ci-dessus. L’authentification unique n’est jamais exigée pour toute l’instance : la connexion intégrée (mot de passe, passkey, deuxième facteur) reste le défaut.
Un propriétaire peut exiger que les membres d’un logement se connectent par un fournisseur déclaré, depuis Foyer et rôles. La règle est contrôlée à chaque ouverture du logement, par le web comme par l’API :
une session connectée par mot de passe ou passkey voit le logement dans sa liste, signalé, et obtient une page qui propose de continuer avec le fournisseur ;
l’API répond
403avec"code": "sso_required"et l’identifiant du fournisseur ;les jetons d’API n’ouvrent jamais un tel logement : un jeton n’est pas une connexion par le fournisseur.
Un membre dont le compte n’est pas encore lié au fournisseur le lie depuis les pages du compte, une fois connecté, puis se connecte par le fournisseur. Si un fournisseur est retiré de l’instance, les logements qui l’exigent restent verrouillés jusqu’à la levée de la règle. Un propriétaire ouvre la page verrouillée et choisit Retirer l’exigence de connexion (proposé seulement quand le fournisseur n’est plus déclaré) ; ou l’administrateur utilise Retirer ces exigences sur la page de l’instance, qui les efface toutes sans montrer aucun logement. Quitter un logement verrouillé n’exige jamais le fournisseur.