Connexion d'entreprise¶
Avec une connexion d'entreprise, les personnes de votre organisation se connectent à OS avec le compte qu'elles ont déjà chez votre propre fournisseur d'identité, comme Microsoft Entra ID, Google Workspace ou Okta, par OpenID Connect ou SAML. Cette page montre comment configurer une connexion d'entreprise, l'essayer, la rendre obligatoire, qui peut se connecter sans elle, qui peut s'affilier de lui-même et comment la supprimer. Il n'y a pas encore d'écran pour cela : un administrateur utilise l'API d'OS, avec les routes ci-dessous.
Qui peut faire quoi¶
Un org-admin de l'organisation peut configurer, modifier et supprimer la connexion d'entreprise.
Qui la configure doit aussi pouvoir gérer le domaine auquel elle appartient (Gérer les
rôles). Chaque membre peut lire où en est la connexion.
Une organisation a au plus une connexion d'entreprise. Elle appartient à un domaine que votre
organisation a prouvé, par exemple jansen.fr (Domaines et adresses). Prouvez
donc d'abord le domaine.
Configurer une connexion OpenID Connect¶
- Chez votre fournisseur d'identité, créez une application pour OS. Vous obtenez un identifiant client et un secret.
-
Configurez la connexion avec
PUT /api/v1/organisations/{id}/company-loginet l'en-têteIf-Match: "0":Champ Ce que vous renseignez kindoidcdisplay_namele nom sur la page de connexion, 64 caractères au plus, par exemple Jansendomainle domaine prouvé, par exemple jansen.frauthorization_url,token_url,jwks_url,issuerles adresses de votre fournisseur ; elles figurent dans son document de découverte ( /.well-known/openid-configuration)client_id,client_secretce que votre fournisseur vous a donné client_auth_methodclient_secret_basicouclient_secret_post, comme votre fournisseur le demande -
OS répond
202avec la connexion, au statutpending. Lisezredirect_uridans la réponse et ajoutez cette adresse chez votre fournisseur comme adresse de redirection de l'application. Elle se termine par/broker/os-<identifiant de votre organisation>/endpoint.
Chaque adresse doit commencer par https://, nommer un nom d'hôte (pas une adresse IP), n'avoir
aucun port sauf 443 et faire 2 048 caractères au plus. Aucune réponse ne contient le secret : OS le
conserve chiffré jusqu'à ce que la connexion soit active, puis le jette.
Configurer une connexion SAML¶
Configurez la connexion avec la même route et kind: saml :
| Champ | Ce que vous renseignez |
|---|---|
sso_url |
l'adresse d'authentification unique de votre fournisseur |
entity_id |
l'identifiant d'entité de votre fournisseur |
signing_certificate |
le certificat avec lequel votre fournisseur signe, en PEM ; RSA d'au moins 2 048 bits ou EC sur P-256 ou plus fort, non expiré |
display_name, domain |
comme pour OpenID Connect |
Donnez ensuite à votre fournisseur l'adresse de metadata_url dans la réponse : elle contient tout
ce que votre fournisseur doit savoir d'OS. OS demande des réponses signées et l'adresse e-mail comme
NameID.
Ce que dit le statut¶
OS met la connexion dans Keycloak, le service de connexion d'OS, puis la relit. GET
/api/v1/organisations/{id}/company-login montre où l'on en est :
status |
Signification |
|---|---|
pending |
OS met la connexion en place. Il attend que le service de connexion connaisse aussi le domaine, en général quelques secondes et une heure au plus. |
active |
La connexion est en place. applied_version est égal à version. |
failed |
La connexion n'a pas été mise en place ; failure_reason dit pourquoi. |
removing |
OS retire la connexion. |
failure_reason |
Ce qui s'est passé, et ce que vous faites |
|---|---|
domain_taken |
Une autre organisation utilise déjà ce domaine pour sa connexion. Contactez l'exploitant d'OS. |
refused |
Le service de connexion a refusé les réglages. Vérifiez les adresses et configurez de nouveau la connexion. |
mismatch |
La connexion était autre que celle qu'OS a mise en place, ou a été retirée sans OS. Configurez-la de nouveau, avec le secret. |
given_up |
Le service de connexion est resté trop longtemps injoignable, ou ne connaissait toujours pas le domaine au bout d'une heure. Configurez de nouveau la connexion. |
Quand le service de connexion refuse la modification d'une connexion qui fonctionnait déjà, la
version précédente continue de fonctionner : applied_version nomme cette version. Quand il a
accepté les nouveaux réglages et qu'une étape suivante a échoué, les nouveaux réglages
s'appliquent déjà ; vérifiez-les et configurez de nouveau la connexion, avec le secret.
Essayer la connexion¶
OS n'appelle jamais lui-même votre fournisseur, il n'y a donc pas de bouton qui teste la connexion.
Essayez-la vous-même : ouvrez une fenêtre privée, allez sur OS et connectez-vous avec une adresse de
votre domaine. La réponse nomme aussi sign_in_hint ; avec lui, OS envoie directement quelqu'un
chez votre fournisseur. Faites-le avant de rendre la connexion obligatoire.
Rendre la connexion obligatoire¶
Quand la connexion est obligatoire, un membre n'accède à votre organisation que s'il s'est connecté
par la connexion d'entreprise. Activez-le avec PATCH /api/v1/organisations/{id}/company-login et
{"required": true}, avec dans If-Match la version que vous avez lue.
OS refuse (409) tant que la connexion n'est pas active, ou si vous ne vous êtes pas connecté vous-même
par la connexion, n'êtes pas une exception et ne gérez pas l'organisation d'en haut. Ainsi vous ne
vous enfermez pas dehors avec une connexion qui ne fonctionne pas.
Un membre qui s'est connecté autrement reçoit 403 avec le type de problème
company-login-required et le sign_in_hint de votre connexion ; OS le déconnecte alors et le
reconnecte par la connexion d'entreprise. Un administrateur d'un partenaire qui gère votre
organisation d'en haut relève de la règle de sa propre organisation, pas de la vôtre.
Exceptions¶
Pour le jour où votre fournisseur ne fonctionne pas, vous pouvez désigner au plus trois membres qui
peuvent aussi se connecter autrement. PUT
/api/v1/organisations/{id}/company-login/exemptions/{membership_id} ajoute un membre, DELETE sur la
même adresse le retire. La réponse les nomme sous exemptions. Une exception prend fin quand
l'appartenance est désactivée ou supprimée. Chaque fois qu'une exception se connecte autrement, cela
figure dans le journal d'audit.
Vous pouvez aussi inviter une personne dont l'adresse est hors du domaine que votre connexion dirige, par exemple un conseiller externe, avec l'une des trois exceptions : "company_login_exempt": true dans le corps de
POST /api/v1/organisations/{id}/invitations. L'invitation compte alors parmi les trois et figure aussitôt sous exemptions ; la personne la garde en acceptant, et elle prend fin quand l'invitation est retirée ou expire.
S'affilier soi-même¶
joining décide de ce qui arrive à une personne qui se connecte par la connexion d'entreprise avec
une adresse de votre domaine mais n'est pas encore membre :
joining |
Ce qui se passe |
|---|---|
invitation (par défaut) |
OS lui dit de demander une invitation à un administrateur (Inviter des personnes). |
automatic |
OS lui propose de devenir membre, avec le seul rôle member. |
Modifiez-le avec PATCH et {"joining": "automatic"}. L'affiliation fonctionne aussi pour une
personne qui se connecte pour la première fois par la connexion d'entreprise : OS accepte pour cela
son adresse parce qu'elle se trouve dans votre domaine prouvé et que la personne est entrée par votre
propre connexion.
Modifier la connexion¶
Renvoyez toute la connexion avec PUT, avec dans If-Match la version que vous avez lue, et le
secret avec. Le type (oidc ou saml) ne peut pas changer ; supprimez alors la connexion et
configurez-en une nouvelle. Tant que le service de connexion n'accepte pas la modification, la
version précédente continue de fonctionner.
Supprimer la connexion¶
DELETE /api/v1/organisations/{id}/company-login, avec If-Match, supprime la connexion. Elle n'est
alors plus obligatoire aussitôt, et les exceptions prennent fin. Les membres et leurs comptes
restent : qui a aussi un mot de passe se connecte avec ; qui se connectait seulement par la
connexion d'entreprise définit un mot de passe par Mot de passe oublié ? sur la page de connexion.
Si vous abandonnez le domaine, la connexion disparaît avec lui (Domaines et
adresses).
Quand OS refuse¶
| Réponse | Signification |
|---|---|
409 |
If-Match nomme une autre version, ou "0" alors qu'une connexion existe ; le type a changé ; la connexion est en cours de suppression ; une quatrième exception ; rendre la connexion obligatoire alors que ce n'est pas encore possible. |
422 |
If-Match manque ; le domaine n'est pas prouvé ; une adresse, le certificat ou le secret enfreint les règles ci-dessus. |
503 |
OS ne peut pas conserver le secret en sécurité pour le moment. Réessayez plus tard. |
Ce qu'OS surveille¶
Toutes les cinq minutes, OS vérifie que votre connexion dans le service de connexion est toujours telle qu'OS l'a mise en place, et rétablit ce que quelqu'un a changé en dehors d'OS. Vous n'avez rien à faire pour cela. Chaque modification que vous faites figure dans le journal d'audit, sans le secret.