Créer une extension d’authentification personnalisée pour le démarrage de la collection d’attributs et l’envoi d’événements (préversion)
S’applique à : Locataires de main-d’œuvre Locataires externes (en savoir plus)
Cet article explique comment étendre l’expérience d’inscription de l’utilisateur dans l’ID externe Microsoft Entra pour les clients. Dans les flux d’utilisateurs d’inscription du client, les écouteurs d’événements peuvent être utilisés pour étendre le processus de collection d’attributs avant celle-ci et au moment de l’envoi d’attributs :
L’événement OnAttributeCollectionStart se produit au début de l’étape de collection d’attributs, avant le rendu de la page de collection d’attributs. Vous pouvez ajouter des actions telles que Préremplir des valeurs et Afficher une erreur bloquante.
Conseil
Pour essayer cette fonctionnalité, accédez à la version de démonstration Woodgrove Groceries et démarrez le cas d’utilisation « Préremplir les attributs d’inscription ».
L’événement OnAttributeCollectionSubmit se produit une fois que l’utilisateur entre et envoie des attributs. Vous pouvez ajouter des actions telles que la validation ou la modification des entrées de l’utilisateur.
Conseil
Pour essayer cette fonctionnalité, accédez à la version de démonstration Woodgrove Groceries et démarrez le cas d’utilisation « Valider les attributs d’inscription » ou le cas d’utilisation « Empêcher un utilisateur de poursuivre le processus d’inscription ».
Outre la création d’une extension d’authentification personnalisée pour le démarrage et l’envoi d’événements de collection d’attributs, vous devez créer une API REST qui définit les actions de flux de travail à entreprendre pour chaque événement. Vous pouvez utiliser n’importe quel langage de programmation, infrastructure et environnement d’hébergement pour créer et héberger votre API REST. Cet article illustre un moyen rapide de commencer à utiliser une fonction Azure C#. Azure Functions vous permet d’exécuter votre code dans un environnement serverless, sans avoir à créer une machine virtuelle ou à publier une application web au préalable.
Prérequis
- Pour utiliser les services Azure, y Azure Functions, vous avez besoin d’un abonnement Azure. Si vous n’avez pas de compte Azure, vous pouvez vous inscrire à un essai gratuit ou utiliser les avantages de votre abonnement Visual Studio quand vous créez un compte.
- Flux d’utilisateur d’inscription et de connexion.
Étape 1 : Créer une API REST d’extensions d’authentification personnalisées (application de fonction Azure)
Conseil
Les étapes décrites dans cet article pourraient varier légèrement en fonction du portail de départ.
Dans cette étape, vous créez une API de fonction de déclencheur HTTP à l’aide d’Azure Functions. L’API de fonction est la source de la logique métier pour vos flux d’utilisateurs. Après avoir créé votre fonction de déclencheur, vous pouvez la configurer pour un des événements suivants :
Connectez-vous au portail Azure avec votre compte d’administrateur.
Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Créer une ressource.
Recherchez et sélectionnez Application de fonction, puis sélectionnez Créer.
Dans la page De base, utilisez les paramètres d’application de fonction comme indiqué dans le tableau ci-dessous :
Paramètre Valeur suggérée Description Abonnement Votre abonnement Abonnement dans lequel la nouvelle application de fonction sera créée. Groupe de ressources myResourceGroup Sélectionnez le groupe de ressources existant ou le nom du nouveau dans lequel vous allez créer votre application de fonction. Nom de l’application de fonction Nom globalement unique Nom qui identifie la nouvelle application de fonction. Les caractères valides sont a-z
(insensible à la casse),0-9
et-
.Publier Code Option permettant de publier des fichiers de code ou un conteneur Docker. Pour les besoins de ce didacticiel, sélectionnez Code. Pile d’exécution .NET Votre langage de programmation préféré. Pour les besoins de ce didacticiel, sélectionnez .NET. Version 6 (LTS) in-process Version du runtime .NET. In-process signifie que vous pouvez créer et modifier des fonctions dans le portail, ce qui est recommandé pour ce guide Région Région recommandée Sélectionnez une région proche de chez vous, ou proche d’autres services auxquels vos fonctions peuvent accéder. Système d’exploitation Windows Le système d’exploitation est présélectionné pour vous en fonction de la pile d’exécution que vous avez sélectionnée. Type de plan Consommation (serverless) Plan d’hébergement qui définit la façon dont les ressources sont allouées à votre Function App. Sélectionnez Vérifier + créer pour passer en revue les sélections de configuration d’application, puis sélectionnez Créer. Le déploiement prend quelques minutes.
Une fois le déploiement effectué, sélectionnez Accéder à la ressource pour voir votre nouvelle application de fonction.
1.1 Créer des fonctions de déclencheur HTTP
Maintenant que vous avez créé l’application de fonction Azure, vous créez des fonctions de déclencheur HTTP pour les actions que vous souhaitez appeler avec une requête HTTP. Ces déclencheurs HTTP sont référencés et appelés par votre extension d’authentification personnalisée Microsoft Entra.
- Dans la page Vue d’ensemble de votre application de fonction, sélectionnez le volet Fonctions , puis sélectionnez Créer une fonction sous Créer dans le portail Azure.
- Dans la fenêtre Créer une fonction, laissez la propriété Environnement de développement définie sur Développer dans le portail. Sous Modèle, sélectionnez Déclencheur HTTP.
- Sous Détails du modèle, entrez CustomAuthenticationExtensionsAPI comme propriété Nouvelle fonction.
- Pour le niveau d’autorisation, sélectionnez Fonction.
- Sélectionnez Créer.
1.2 Configurer le déclencheur HTTP pour OnAttributeCollectionStart
- Dans le menu, sélectionnez Code + test.
- Sélectionnez l’onglet ci-dessous pour le scénario que vous souhaitez implémenter : Continuer, Bloquer ou SetPrefillValues. Remplacez le code par le ou les extraits de code fournis.
- Après avoir remplacé le code, dans le menu supérieur, sélectionnez Obtenir l’URL de la fonction, puis copiez l’URL. Vous utilisez cette URL à l’Étape 2 : créer et inscrire une extension d’authentification personnalisée pour l’URL cible.
Utilisez ce déclencheur HTTP pour permettre à l’utilisateur de continuer avec le flux d’inscription si aucune action supplémentaire n’est nécessaire.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionStart.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionStartResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
1.3 Configurer le déclencheur HTTP pour OnAttributeCollectionSubmit
- Dans le menu, sélectionnez Code + test.
- Sélectionnez l’onglet ci-dessous pour le scénario que vous souhaitez implémenter : Continuer, Bloquer, Modifier les valeurs ou Erreur de validation. Remplacez le code par le ou les extraits de code fournis.
- Après avoir remplacé le code, dans le menu supérieur, sélectionnez Obtenir l’URL de la fonction, puis copiez l’URL. Vous utilisez cette URL à l’Étape 2 : créer et inscrire une extension d’authentification personnalisée pour l’URL cible.
Utilisez ce déclencheur HTTP pour permettre à l’utilisateur de continuer avec le flux d’inscription si aucune action supplémentaire n’est nécessaire.
#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Text;
public static async Task<object> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic request = JsonConvert.DeserializeObject(requestBody);
var actions = new List<ContinueWithDefaultBehavior>{
new ContinueWithDefaultBehavior { type = "microsoft.graph.attributeCollectionSubmit.continueWithDefaultBehavior"}
};
var dataObject = new Data {
type = "microsoft.graph.onAttributeCollectionSubmitResponseData",
actions= actions
};
dynamic response = new ResponseObject {
data = dataObject
};
// Send the response
return response;
}
public class ResponseObject
{
public Data data { get; set; }
}
[JsonObject]
public class Data {
[JsonProperty("@odata.type")]
public string type { get; set; }
public List<ContinueWithDefaultBehavior> actions { get; set; }
}
[JsonObject]
public class ContinueWithDefaultBehavior {
[JsonProperty("@odata.type")]
public string type { get; set; }
}
Étape 2 : Créer et inscrire une extension d’authentification personnalisée
Dans cette étape, vous inscrivez une extension d’authentification personnalisée utilisée par Microsoft Entra ID pour appeler votre fonction Azure. L’extension d’authentification personnalisée contient des informations sur votre point de terminaison d’API REST, sur les actions de démarrage et d’envoi de la collection d’attributs qu’elle analyse à partir de votre API REST et sur la façon de s’authentifier auprès de votre API REST.
Connectez-vous au centre d’administration Microsoft Entra au minimum en tant qu’Administrateur d’application et Administrateur d’authentification.
Accédez à Identité>Identités externes>Extensions d’authentification personnalisées.
Sélectionnez Créer une extension personnalisée.
Dans Éléments de base, sélectionnez l’événement AttributeCollectionStart ou l’événement AttributeCollectionSubmit, puis Suivant. Vérifiez que ceci correspond à la configuration de l’étape précédente.
Dans Configuration du point de terminaison, renseignez les propriétés suivantes :
- Nom : spécifiez un nom pour votre extension d’authentification personnalisée. Par exemple, Événement OnAttributeCollection
- URL cible :
{Function_Url}
de l’URL de votre fonction Azure. - Description : description de vos extensions d’authentification personnalisées.
Sélectionnez Suivant.
Dans Authentification d’API, sélectionnez l’option Créer une inscription d’application pour créer une inscription d’application qui représente votre application de fonction.
Donnez un nom à l’application, par exemple API d’événements d’authentification de fonctions Azure.
Cliquez sur Suivant.
Sélectionnez Créer, qui crée l’extension d’authentification personnalisée et l’inscription d’application associée.
2.2 Accorder un consentement administrateur
Une fois votre extension d’authentification personnalisée créée, accordez le consentement à l’application inscrite ; cela permet à l’extension d’authentification personnalisée de s’authentifier auprès de votre API.
- Accédez à Identité>Identités externes>Extensions d’authentification personnalisées (préversion).
- Sélectionnez votre extension d’authentification personnalisée dans la liste.
- Dans l’onglet Vue d’ensemble, sélectionnez le bouton Accorder l’autorisation pour donner le consentement administrateur à l’application inscrite. L’extension d’authentification personnalisée utilise
client_credentials
pour s’authentifier auprès de l’application de fonction Azure à l’aide de l’autorisationReceive custom authentication extension HTTP requests
. Sélectionnez Accepter.
Étape 3 : Ajouter l’extension d’authentification personnalisée à un flux d’utilisateur
Vous pouvez maintenant associer l’extension d’authentification personnalisée à un ou plusieurs de vos flux d’utilisateurs.
Remarque
Si vous devez créer un flux d’utilisateur, suivez les étapes décrites dans Créer un flux d’utilisateur d’inscription et de connexion pour les clients.
3.1 Ajouter l’extension d’authentification personnalisée à un flux d’utilisateur existant
Connectez-vous au centre d’administration Microsoft Entra au moins en tant qu’Administrateur d’application et Administrateur d’authentification.
Si vous avez accès à plusieurs tenants, utilisez l’icône Paramètres dans le menu supérieur pour basculer vers votre tenant externe.
Accédez à Identité>Identités externes>Flux utilisateur.
Sélectionnez le flux d’utilisateur dans la liste.
Sélectionnez Extensions d’authentification personnalisées.
Dans la page Extensions d’authentification personnalisées, vous pouvez associer votre extension d’authentification personnalisée à deux étapes différentes dans votre flux d’utilisateur :
- Avant de collecter des informations auprès de l’utilisateur est associé à l’événement OnAttributeCollectionStart. Sélectionnez le crayon de modification. Seules les extensions personnalisées configurées pour l’événement OnAttributeCollectionStart sont affichées. Sélectionnez l’application que vous avez configurée pour l’événement de démarrage de la collection d’attributs, puis cliquez sur Sélectionner.
- Quand un utilisateur envoie ses informations est associé à l’événement OnAttributeCollectionSubmit. Seules les extensions personnalisées configurées pour l’événement OnAttributeCollectionSubmit sont affichées. Sélectionnez l’application que vous avez configurée pour l’événement d’envoi de la collection d’attributs, puis cliquez sur Sélectionner.
Vérifiez que les applications répertoriées en regard des deux étapes de collection d’attributs sont correctes.
Sélectionnez l’icône Enregistrer.
Étape 4 : test de l’application
Pour obtenir un jeton et tester l’extension d’authentification personnalisée, vous pouvez utiliser l’application https://jwt.ms. Il s’agit d’une application Web Microsoft qui affiche le contenu décodé d’un jeton (le contenu du jeton ne quitte jamais votre navigateur).
Procédez comme suit pour inscrire l’application web jwt.ms :
4.1 Inscrire l’application web jwt.ms
- Connectez-vous au centre d'administration Microsoft Entra au minimum en tant qu’Administrateur d'application.
- Accédez à Identité>Applications>Inscriptions d’applications.
- Sélectionnez Nouvelle inscription.
- Entrez un Nom pour l’application. Par exemple, Mon application de test.
- Sous Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel uniquement.
- Dans la liste déroulante Sélectionner une plateforme dans URI de redirection, sélectionnez Web, puis entrez
https://jwt.ms
dans la zone de texte URL. - Sélectionnez Inscrire pour procéder à l’inscription d’application.
4.2 Récupérer l’ID de l’application
Dans l’inscription de votre application, sous Vue d’ensemble, copiez l’ID d’application (client). L’ID d’application est appelé <client_id>
dans les étapes ultérieures. Dans Microsoft Graph, il est référencé par la propriété appId.
4.3 Activer le flux implicite
L’application de test jwt.ms utilise le flux implicite. Activez le flux implicite dans votre inscription Mon application de test avec les étapes suivantes.
Important
Microsoft vous recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d’authentification décrit dans cette procédure demande un degré de confiance très élevé dans l’application et comporte des risques qui ne sont pas présents dans d’autres flux. Cette approche ne doit pas être utilisée pour authentifier les utilisateurs auprès de vos applications de production (en savoir plus).
- Sous Gérer, sélectionnez Authentification.
- Sous Flux d’octroi implicite et flux hybride, cochez la case Jetons d’ID (utilisés pour les flux implicites et hybrides).
- Sélectionnez Enregistrer.
Étape 5 : protéger votre fonction Azure
L’extension d’authentification personnalisée Microsoft Entra utilise le flux de serveur à serveur pour obtenir un jeton d’accès envoyé dans l’en-tête HTTP Authorization
à votre fonction Azure. Lorsque vous publiez votre fonction sur Azure, en particulier dans un environnement de production, vous devez valider le jeton envoyé dans l’en-tête d’autorisation.
Pour protéger votre fonction Azure, suivez ces étapes pour intégrer l’authentification Microsoft Entra, afin de valider les jetons entrants avec votre inscription d’application API d’événements d’authentification Azure Functions.
Remarque
Si l’application de fonction Azure est hébergée dans un locataire Azure différent du locataire dans lequel votre extension d’authentification personnalisée est inscrite, passez à l’Étape 5.1 : Utiliser le fournisseur d’identité OpenID Connect.
5.1 Ajouter un fournisseur d’identité à votre fonction Azure
Connectez-vous au portail Azure.
Accédez à et sélectionnez l’application de fonction que vous avez publiée précédemment.
Sélectionnez Authentification dans le menu de gauche.
Sélectionnez Ajouter un fournisseur d'identité.
Sélectionnez Microsoft en tant que fournisseur d'identité.
Sélectionnez Client comme type de locataire.
Sous Inscription d’applications, entrez le
client_id
de l’inscription d’applications API des événements d’authentification Azure Functions que vous avez créée précédemment.Pour l’URL de l’émetteur, entrez l’URL suivante,
https://{domainName}.ciamlogin.com/{tenant_id}/v2.0
, où{domainName}
est le nom de domaine de votre tenant externe.{tenantId}
est l’ID de tenant de votre tenant externe. Votre extension d’authentification personnalisée doit être inscrite ici.
Sous Requêtes non authentifiées, sélectionnez HTTP 401 Non autorisé comme fournisseur d’identité.
Désélectionnez l’option Magasin de jetons.
Sélectionnez Ajouter pour ajouter l’authentification à votre fonction Azure.
5.2 Utilisation d’un fournisseur d’identité OpenID Connect
Si vous avez configuré l’Étape 5 : Protéger votre fonction Azure, ignorez cette étape. Sinon, si la fonction Azure est hébergée sous un locataire différent du locataire dans lequel votre extension d’authentification personnalisée est inscrite, procédez comme suit pour protéger votre fonction :
Connectez-vous au Portail Azure, ensuite accédez et sélectionnez l’application de fonction que vous avez publiée précédemment.
Sélectionnez Authentification dans le menu de gauche.
Sélectionnez Ajouter un fournisseur d'identité.
Sélectionnez OpenID Connect en tant que fournisseur d'identité.
Fournissez un nom, tel que Contoso Microsoft Entra ID.
Sous l’entrée Métadonnées, entrez l’URL suivante pour l’URL du document. Remplacez
{tenantId}
par votre ID de locataire Microsoft Entra.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
Sous Inscription d’applications, entrez l’ID d’application (ID client) de l’inscription de l’application API des événements d’authentification Azure Functions que vous avez créée précédemment.
Dans le centre d’administration Microsoft Entra :
- Sélectionnez l’inscription de l’application API des événements d’authentification Azure Functions que vous avez créée précédemment.
- Sélectionnez Certificats et secrets>Clés secrètes client>Nouvelle clé secrète client.
- Ajoutez une description pour votre clé secrète client.
- Sélectionnez un délai d’expiration pour le secret ou spécifiez une durée de vie personnalisée.
- Sélectionnez Ajouter.
- Enregistrez la valeur du secret en prévision d’une utilisation dans le code de votre application cliente. Cette valeur secrète ne sera plus jamais affichée lorsque vous aurez quitté cette page.
De retour à la fonction Azure, sous l’inscription de l’application, entrez le secret du client.
Désélectionnez l’option Magasin de jetons.
Sélectionnez Ajouter pour ajouter le fournisseur d’identité OpenID Connect.
Étape 6 : Tester l’application
Pour tester votre extension d’authentification personnalisée, procédez comme suit :
Ouvrez un nouveau navigateur privé et accédez à l’URL suivante :
https://<domainName>.ciamlogin.com/<tenant_id>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=code+id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
- Remplacez
<domainName>
par le nom de votre tenant externe, puis remplacez<tenant-id>
par l’ID de votre tenant externe. - Remplacez
<client_id>
par l’ID de l’application que vous avez ajoutée au flux d’utilisateur.
- Remplacez
Une fois connecté, vous et votre jeton décodé serez dirigés vers
https://jwt.ms
.