Ajouter un flux de travail d’approbation personnalisé à l’inscription en libre-service

S’applique à :Cercle vert avec un symbole de coche blanche. Locataires de main-d’œuvre Cercle blanc avec un symbole X gris. 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

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.

  1. Connectez-vous au Centre d’administration de Microsoft Entra en tant qu’Administrateur de l’utilisateur.
  2. Accédez à Identité>Applications>Inscriptions d’applications, puis sélectionnez Nouvelle inscription.
  3. Entrez un Nom pour l’application, par exemple, Approbations d’inscription.
  4. Sélectionnez Inscription. Vous pouvez conserver les valeurs par défaut des autres champs.

Capture d’écran mettant en évidence le bouton Inscription.

  1. Sous Gérer dans le menu de gauche, sélectionnez Autorisations de l’API, puis sélectionnez Ajouter une autorisation.
  2. Dans la page Demander des autorisations d’API, sélectionnez Microsoft Graph, puis Autorisations d’application.
  3. 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.

Capture d’écran de demande des autorisations d’API.

  1. Dans la page Autorisations de l’API, sélectionnez Accorder le consentement administrateur pour (nom de votre locataire) , puis Oui.
  2. Sous Gérer dans le menu de gauche, sélectionnez Certificats et secrets, puis Nouvelle clé secrète client.
  3. 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.
  4. 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.

Capture d’écran de la copie de la clé secrète client.

  1. 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 ».

Capture d’écran de vérification de la configuration du connecteur de l’API d’état 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 ».

Capture d’écran de la configuration du connecteur de l’API d’approbation de requête.

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 :

  1. Connectez-vous au Centre d’administration de Microsoft Entra en tant qu’Administrateur de l’utilisateur.

  2. 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.

  3. 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.

Capture d’écran du connecteur d’API dans un flux utilisateur.

  1. 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 :

Exemple de page d’approbation en attente

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.

  1. 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"
}
  1. 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 emailrevendication 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.
mail Oui Équivaut à la emailrevendication 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, cityet 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.

  1. 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"
}
  1. 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>"
    }
}
  1. 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"
}

Étapes suivantes