Ajouter un flux de travail d’approbation personnalisé à l’inscription en libre-service
S’applique à : Locataires de main-d’œuvre Locataires externes (en savoir plus)
Avec les connecteurs d’API, vous pouvez intégrer vos propres flux de travail d’approbation personnalisés à l’inscription en libre-service afin de pouvoir gérer les comptes d’utilisateurs invités qui sont créés dans votre locataire.
Cet article fournit un exemple d’intégration à un système d’approbation. Dans cet exemple, le workflow utilisateur d’inscription en libre-service collecte les données utilisateur pendant le processus d’inscription et les transmet à votre système d’approbation. Le système d’approbation peut ensuite :
- Approuver automatiquement l’utilisateur et autoriser Microsoft Entra ID à créer le compte d’utilisateur.
- Déclencher une révision manuelle. Si la requête est approuvée, le système d’approbation utilise Microsoft Graph pour approvisionner le compte d’utilisateur. Le système d’approbation peut également informer l’utilisateur que son compte a été créé.
Important
- À partir du 12 juillet 2021, si les clients B2B de Microsoft Entra configurent de nouvelles intégrations Google pour une utilisation avec l’inscription en libre-service pour leurs applications métier ou personnalisées, l’authentification avec les identités Google ne fonctionnera pas tant que les authentifications ne seront pas déplacées vers les vues web du système. Plus d’informations
- À partir du 30 septembre 30, 2021, Google déprécie la prise en charge de la connexion aux vues web intégrée. Si vos applications authentifient les utilisateurs avec une vue web incorporée et que vous utilisez la Fédération des services Google avec Azure AD B2C ou Microsoft Entra B2B pour des invitations utilisateur externes ou une inscription en libre-service, les utilisateurs de Google Gmail ne pourront pas s’authentifier. Plus d’informations
Inscrire une application pour votre système d’approbation
Conseil
Les étapes décrites dans cet article pourraient varier légèrement en fonction du portail de départ.
Vous devez inscrire votre système d’approbation en tant qu’application dans votre tenant Microsoft Entra pour qu’il puisse s’authentifier auprès de Microsoft Entra ID et avoir l’autorisation de créer des utilisateurs. En savoir plus sur les notions de base de l’authentification et des autorisations pour Microsoft Graph.
- Connectez-vous au Centre d’administration de Microsoft Entra en tant qu’Administrateur de l’utilisateur.
- Accédez à Identité>Applications>Inscriptions d’applications, puis sélectionnez Nouvelle inscription.
- Entrez un Nom pour l’application, par exemple, Approbations d’inscription.
- Sélectionnez Inscription. Vous pouvez conserver les valeurs par défaut des autres champs.
- Sous Gérer dans le menu de gauche, sélectionnez Autorisations de l’API, puis sélectionnez Ajouter une autorisation.
- Dans la page Demander des autorisations d’API, sélectionnez Microsoft Graph, puis Autorisations d’application.
- Sous Sélectionner autorisations, développez Utilisateur, puis activez la case à cocher User.ReadWrite.All (Utilisateur.LireDroite.Tous) . Cette autorisation permet au système d’approbation de créer l’utilisateur lors de l’approbation. Sélectionnez ensuite Ajouter des autorisations.
- Dans la page Autorisations de l’API, sélectionnez Accorder le consentement administrateur pour (nom de votre locataire) , puis Oui.
- Sous Gérer dans le menu de gauche, sélectionnez Certificats et secrets, puis Nouvelle clé secrète client.
- Entrez une Description pour la clé secrète, par exemple Approbations client secrètes, puis sélectionnez le délai d’Expiration de la clé secrète client. Sélectionnez ensuite Ajouter.
- Copiez la valeur de la clé secrète client. Les valeurs de clé secrète client peuvent uniquement être consultées immédiatement après leur création. Veillez à enregistrer le secret lors de la création, avant de quitter la page.
- Configurez votre système d’approbation pour utiliser l’ID d’application en tant qu’ID client et la clé secrète client que vous avez générée pour vous authentifier avec Microsoft Entra ID.
Créer les connecteurs d’API
Ensuite, vous allezcréer les connecteurs d’API pour le workflow de votre utilisateur d’inscription en libre-service. Votre API de système d’approbation a besoin de deux connecteurs et de points de terminaison correspondants, comme les exemples ci-dessous. Ces connecteurs d’API effectuent les opérations suivantes :
- Vérifiez l’état d’approbation. Envoyer un appel au système d’approbation immédiatement après qu’un utilisateur se connecte avec un fournisseur d’identité pour vérifier si l’utilisateur dispose d’une requête d’approbation existante ou s’il a déjà été refusé. Si votre système d’approbation n’effectue que des décisions d’approbation automatique, ce connecteur d’API n’est peut-être pas nécessaire. Exemple de connecteur d’API « Vérifier le statut d’approbation ».
- Demander une approbation : envoyer un appel au système d’approbation une fois qu’un utilisateur a terminé la page de collection d’attributs, mais avant la création du compte d’utilisateur, pour demander l’approbation. La requête d’approbation peut être automatiquement accordée ou révisée manuellement. Exemple de connecteur d’API « Demander une approbation ».
Pour créer ces connecteurs, suivez les étapes dans créer un connecteur d’API.
Activer les connecteurs d’API dans un workflow utilisateur
À présent, vous allez ajouter les connecteurs d’API à un workflow utilisateur d’inscription en libre-service en procédant comme suit :
Connectez-vous au Centre d’administration de Microsoft Entra en tant qu’Administrateur de l’utilisateur.
Accédez à Identité>Identités externes>Flux d’utilisateurs, puis sélectionnez le flux d’utilisateur pour lequel vous souhaitez activer le connecteur d’API.
Sélectionnez Connecteurs d’API, puis sélectionnez les points de terminaison d’API que vous souhaitez appeler aux étapes suivantes dans le workflow d’utilisateur :
- Une fois la fédération effectuée à l’aide d’un fournisseur d’identité lors de la connexion : Sélectionnez votre connecteur d’API d’état d’approbation, par exemple Vérifier l’état d’approbation.
- Avant de créer l’utilisateur : Sélectionnez votre connecteur d’API de requête d’approbation, par exemple Approbation de demande.
- Sélectionnez Enregistrer.
Contrôler le flux d’inscription avec les réponses d’API
Votre système d’approbation peut utiliser ses réponses lorsqu’il est appelé pour contrôler le flux d’inscription.
Requête et réponses pour le connecteur d’API « Vérifier l’état d’approbation »
Exemple de requête reçue par l’API du connecteur d’API « Vérifier le statut d’approbation » :
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [ //Sent for Google, Facebook, and Email One Time Passcode identity providers
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"lastName":"Smith",
"ui_locales":"en-US"
}
Les revendications exactes envoyées à l’API dépendent des informations fournies par le fournisseur d’identité. « email » est toujours envoyé.
Réponse de continuation pour « Vérifier l’état d’approbation »
Le point de terminaison de l’API Vérifier l’état d’approbationdoit renvoyer une réponse de continuation si :
- L’utilisateur n’a pas demandé d’approbation précédemment.
Exemple de réponse de continuation :
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "Continue"
}
Réponse de blocage pour « Vérifier l’état d’approbation »
Le point de terminaison de l’API Vérifier l’état d’approbationdoit renvoyer une réponse de blocage si :
- L’approbation de l’utilisateur est en attente.
- L’utilisateur a été refusé et ne doit pas être autorisé à demander de nouveau l’approbation.
Voici quelques exemples de réponses de blocage :
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "ShowBlockPage",
"userMessage": "Your access request is already processing. You'll be notified when your request has been approved.",
}
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "ShowBlockPage",
"userMessage": "Your sign up request has been denied. Please contact an administrator if you believe this is an error",
}
Requête et réponses pour le connecteur d’API « Demande d’approbation »
Exemple de requête HTTP reçue par l’API du connecteur d’API « Demander une approbation » :
POST <API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"identities": [ // Sent for Google, Facebook, and Email One Time Passcode identity providers
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"givenName":"John",
"surname":"Smith",
"jobTitle":"Supplier",
"streetAddress":"1000 Microsoft Way",
"city":"Seattle",
"postalCode": "12345",
"state":"Washington",
"country":"United States",
"extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
"extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
"ui_locales":"en-US"
}
Les revendications exactes envoyées à l’API dépendent des informations collectées par l’utilisateur ou fournies par le fournisseur d’identité.
Réponse de continuation pour « Requête d’approbation »
Le point de terminaison de l’API Requête d’approbation doit renvoyer une réponse de continuation si :
- L’utilisateur peut être approuvé automatiquement.
Exemple de réponse de continuation :
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "Continue"
}
Important
Si une réponse de continuation est reçue, Microsoft Entra ID crée un compte d’utilisateur et dirige l’utilisateur vers l’application.
Réponse de blocage pour « Requête d’approbation »
Le point de terminaison de l’API Requête d’approbation doit retourner une réponse de blocage si :
- Une requête d’approbation de l’utilisateur a été créée et est maintenant en attente.
- Une requête d’approbation de l’utilisateur a été automatiquement refusée.
Voici quelques exemples de réponses de blocage :
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "ShowBlockPage",
"userMessage": "Your account is now waiting for approval. You'll be notified when your request has been approved.",
}
HTTP/1.1 200 OK
Content-type: application/json
{
"version": "1.0.0",
"action": "ShowBlockPage",
"userMessage": "Your sign up request has been denied. Please contact an administrator if you believe this is an error",
}
La userMessage
dans la réponse est présentée à l’utilisateur, par exemple :
Création d’un compte d’utilisateur après une approbation manuelle
Une fois que le système d’approbation personnalisé obtient une approbation manuelle, il crée un compte utilisateur à l’aide de Microsoft Graph. La façon dont votre système d’approbation approvisionne le compte d’utilisateur dépend du fournisseur d’identité utilisé par l’utilisateur.
Pour un utilisateur Google ou Facebook fédéré et un code secret à usage unique
Important
Le système d’approbation doit vérifier explicitement que identities
, identities[0]
et identities[0].issuer
sont présents et que identities[0].issuer
est égal à « facebook », « google » ou « mail » pour utiliser cette méthode.
Si votre utilisateur s’est connecté avec un compte Google, Facebook ou e-mail, vous pouvez utiliser l’API de création d’utilisateur.
- L’utilisateur du système d’approbation reçoit la requête HTTP du workflow de l’utilisateur.
POST <Approvals-API-endpoint>
Content-type: application/json
{
"email": "johnsmith@outlook.com",
"identities": [
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"city": "Redmond",
"extension_<extensions-app-id>_CustomAttribute": "custom attribute value",
"ui_locales":"en-US"
}
- Le système d’approbation utilise Microsoft Graph pour créer un compte d’utilisateur.
POST https://graph.microsoft.com/v1.0/users
Content-type: application/json
{
"userPrincipalName": "johnsmith_outlook.com#EXT@contoso.onmicrosoft.com",
"accountEnabled": true,
"mail": "johnsmith@outlook.com",
"userType": "Guest",
"identities": [
{
"signInType":"federated",
"issuer":"facebook.com",
"issuerAssignedId":"0123456789"
}
],
"displayName": "John Smith",
"city": "Redmond",
"extension_<extensions-app-id>_CustomAttribute": "custom attribute value"
}
Paramètre | Obligatoire | Description |
---|---|---|
userPrincipalName | Oui | Peut être généré en acceptant la email revendication envoyée à l’API, en remplaçant le caractère @ par _ et en l’ajoutant à #EXT@<tenant-name>.onmicrosoft.com . |
accountEnabled | Oui | Cette propriété doit être définie sur true . |
Oui | Équivaut à la email revendication envoyée à l’API. |
|
userType | Oui | Doit être Guest . Désigne cet utilisateur en tant qu’utilisateur invité. |
Identités | Oui | Informations d’identité fédérée. |
<otherBuiltInAttribute> | Non | D’autres attributs intégrés tels que displayName , city et d’autres. Les noms de paramètres sont les mêmes que les paramètres envoyés par le connecteur d’API. |
<extension_{extensions-app-id}_CustomAttribute> | Non | Attributs personnalisés relatifs à l’utilisateur. Les noms de paramètres sont les mêmes que les paramètres envoyés par le connecteur d’API. |
Pour un utilisateur Microsoft Entra fédéré ou un utilisateur de compte Microsoft
Si un utilisateur se connecte avec un compte Microsoft Entra fédéré ou un compte Microsoft, vous devez utiliser l’API d’invitation pour créer l’utilisateur, puis éventuellement l’API de mise à jour de l’utilisateur pour affecter plus d’attributs à l’utilisateur.
- Le système d’approbation reçoit la requête HTTP du workflow de l’utilisateur.
POST <Approvals-API-endpoint>
Content-type: application/json
{
"email": "johnsmith@fabrikam.onmicrosoft.com",
"displayName": "John Smith",
"city": "Redmond",
"extension_<extensions-app-id>_CustomAttribute": "custom attribute value",
"ui_locales":"en-US"
}
- Le système d’approbation crée l’invitation à l’aide de la
email
fournie par le connecteur d’API.
POST https://graph.microsoft.com/v1.0/invitations
Content-type: application/json
{
"invitedUserEmailAddress": "johnsmith@fabrikam.onmicrosoft.com",
"inviteRedirectUrl" : "https://myapp.com"
}
Exemple de réponse :
HTTP/1.1 201 OK
Content-type: application/json
{
...
"invitedUser": {
"id": "<generated-user-guid>"
}
}
- Le système d’approbation utilise l’ID de l’utilisateur invité pour mettre à jour le compte de l’utilisateur avec les attributs utilisateur collectés (facultatif).
PATCH https://graph.microsoft.com/v1.0/users/<generated-user-guid>
Content-type: application/json
{
"displayName": "John Smith",
"city": "Redmond",
"extension_<extensions-app-id>_AttributeName": "custom attribute value"
}