Partage via


Configurer un fournisseur de revendication personnalisé pour un événement d’émission de jeton

Cet article décrit comment configurer un fournisseur de réclamations personnalisées pour un événement de démarrage d’émission de jeton. À l’aide d’une API REST Azure Functions existante, vous allez inscrire une extension d’authentification personnalisée et ajouter des attributs que vous prévoyez d’analyser à partir de votre API REST. Pour tester l’extension d’authentification personnalisée, vous allez enregistrer un exemple d’application OpenID Connect afin d’obtenir un jeton et d’afficher les réclamations.

Prérequis

Étape 1 : inscrire une extension d’authentification personnalisée

Vous configurez désormais une extension d’authentification personnalisée, qui sera 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, les revendications qu’elle analyse à partir de votre API REST et la façon de s’authentifier auprès de votre API REST. Suivez ces étapes pour inscrire une extension d’authentification personnalisée dans votre application de fonction Azure.

Remarque

Vous pouvez avoir un maximum de 100 stratégies d’extension personnalisées.

Inscrire une extension d’authentification personnalisée

  1. Connectez-vous au Portail Microsoft Azure en tant qu’administrateur(-trice) d’application et administrateur(-trice) d’authentification.
  2. Recherchez et sélectionnez Microsoft Entra ID, puis Applications d’entreprise.
  3. Sélectionnez Extensions d’authentification personnalisées, puis Créer une extension personnalisée.
  4. Dans Informations de base, sélectionnez le type d’événement tokenIssuanceStart, puis sélectionnez Suivant.
  5. 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 d’émission de jeton.
    • URL cible : {Function_Url} de l’URL de votre fonction Azure. Accédez à la page Vue d’ensemble de votre application de fonction Azure, puis sélectionnez la fonction que vous avez créée. Dans la page Présentation de la fonction, sélectionnez Obtenir l’URL de la fonction et utilisez l’icône de copie pour copier l’URL customauthenticationextension_extension (clé système).
    • Description : description de vos extensions d’authentification personnalisées.
  6. Sélectionnez Suivant.
  7. 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.
  8. Donnez un nom à l’application, par exemple API d’événements d’authentification de fonctions Azure.
  9. Sélectionnez Suivant.
  10. Dans Revendications, entrez les attributs que vous attendez que votre extension d’authentification personnalisée analyse à partir de votre API REST et qui seront fusionnés dans le jeton. Ajoutez les revendications suivantes :
    • dateOfBirth
    • customRoles
    • apiVersion
    • correlationId
  11. Sélectionnez Suivant puis Créer, qui inscrit l’extension d’authentification personnalisée et l’inscription d’application associée.
  12. Notez l’ID d’application sous Authentification d’API, qui est nécessaire pour configurer l’authentification pour votre fonction Azure dans votre application de fonction Azure.

Une fois l’extension d’authentification personnalisée créée, vous devez accorder des autorisations à l’API. L’extension d’authentification personnalisée utilise client_credentials pour s’authentifier auprès de l’application de fonction Azure à l’aide de l’autorisation Receive custom authentication extension HTTP requests.

  1. Ouvrez la page vue d’ensemble de vue d’ensemble de votre nouvelle extension d’authentification personnalisée. Notez l’ID d’application sous l’authentification API, car il sera nécessaire lors de l’ajout d’un fournisseur d’identité.

  2. Sous Authentification d’API, sélectionnez Accorder l’autorisation.

  3. Une nouvelle fenêtre s’ouvre et, une fois la connexion établie, elle demande l’autorisation de recevoir des requêtes HTTP d’extension d’authentification personnalisée. Cela permet à l’extension d’authentification personnalisée de s’authentifier auprès de votre API. Sélectionnez Accepter.

    Capture d’écran montrant comment accorder le consentement administrateur.

Étape 2 : configurer une application OpenID Connect pour recevoir des jetons enrichis

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

2.1. Inscrire une application web test

Procédez comme suit pour inscrire l’application web jwt.ms :

  1. Sur la page Accueil du Portail Azure, sélectionnez Microsoft Entra ID.

  2. Sélectionnez Inscription d’applications>Nouvelle inscription.

  3. Entrez un Nom pour l’application. Par exemple, Mon application de test.

  4. Sous Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel uniquement.

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

  6. Sélectionnez Inscrire pour procéder à l’inscription d’application.

    Capture d’écran montrant comment sélectionner le type de compte et l’URI de redirection pris en charge.

  7. Dans la page de présentation de l’enregistrement de votre application, copiez l’ID de l’application (client). L’ID d’application est appelé {App_to_enrich_ID} dans les étapes ultérieures. Dans Microsoft Graph, il est référencé par la propriété appId.

    Capture d’écran indiquant comment copier l’ID d’application.

2.2 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 :

  1. Sous Gérer, sélectionnez Authentification.
  2. Sous Flux d’octroi implicite et flux hybride, cochez la case Jetons d’ID (utilisés pour les flux implicites et hybrides).
  3. Sélectionnez Enregistrer.

2.3 Activer votre application pour une stratégie de mappage des revendications

Une stratégie de mappage des revendications est utilisée pour sélectionner les attributs renvoyés par l’extension d’authentification personnalisée qui sont mappés au jeton. Pour permettre l’augmentation des jetons, vous devez explicitement activer l’inscription de l’application pour accepter les revendications mappées :

  1. Dans votre inscription Mon application de test, sous Gérer, sélectionnez Manifeste.
  2. Dans le manifeste, recherchez l’attribut acceptMappedClaims et définissez la valeur sur true.
  3. Définissez accessTokenAcceptedVersion sur 2.
  4. Sélectionnez Enregistrer pour enregistrer les modifications.

L’extrait de code JSON suivant montre comment configurer ces propriétés.

{
	"id": "22222222-0000-0000-0000-000000000000",
	"acceptMappedClaims": true,
	"accessTokenAcceptedVersion": 2,  
    ...
}

Avertissement

Ne définissez pas la propriété acceptMappedClaims sur true pour les applications multi-locataire, ce qui peut permettre à des acteurs malveillants de créer des stratégies de mappage des revendications pour votre application. À la place, configurer une clé de signature personnalisée.

Passez à l’étape suivante, Attribuer un fournisseur de revendications personnalisé à votre application.

Étape 3 : attribuer un fournisseur de revendications personnalisées à votre application

Pour que les jetons soient émis avec des revendications entrantes à partir de l’extension d’authentification personnalisée, vous devez attribuer un fournisseur de revendications personnalisées à votre application. En fonction de l’audience du jeton, le fournisseur doit donc être affecté à l’application cliente pour recevoir des revendications dans un jeton d’ID et à l’application de ressource pour recevoir des revendications dans un jeton d’accès. Le fournisseur de revendications personnalisées s’appuie sur l’extension d’authentification personnalisée configurée avec l’écouteur d’événement de début d’émission de jeton. Vous pouvez choisir si l’ensemble ou un sous-ensemble de revendications du fournisseur de revendications personnalisées sont mappés au jeton.

Remarque

Vous pouvez créer seulement 250 affectations uniques entre des applications et des extensions personnalisées. Si vous souhaitez appliquer le même appel d’extension personnalisée à plusieurs applications, nous vous recommandons d’utiliser l’API Microsoft Graph authenticationEventListeners afin de créer des écouteurs pour plusieurs applications. Ceci n’est pas pris en charge dans le portail Azure.

Procédez comme suit pour connecter Mon application test à votre extension d’authentification personnalisée :

Pour attribuer d’abord l’extension d’authentification personnalisée en tant que source de fournisseur de revendications personnalisées;

  1. Sur la page Accueil du Portail Azure, sélectionnez Microsoft Entra ID.

  2. SélectionnezApplications d’entreprise, puis, sous Gérer, sélectionnez Toutes les applications. Recherchez et sélectionnez Mon application de test dans la liste.

  3. Dans la page Vue d’ensemble de Mon application Test, accédez à Gérer, puis sélectionnez d’authentification unique.

  4. Sous Attributs et revendications, sélectionnez Modifier.

    Capture d’écran montrant comment configurer une vignette.

  5. Développez le menu Paramètres avancés.

  6. À côté de Personnaliser le fournisseur de revendications, sélectionnez Configurer.

  7. Développez la zone de liste déroulante Fournisseur de revendications personnalisées, puis sélectionnezÉvénement d’émission de jeton que vous avez créé précédemment.

  8. Sélectionnez Enregistrer.

Ensuite, affectez les attributs du fournisseur de revendications personnalisées, qui doivent être émis dans le jeton en tant que revendications :

  1. Sélectionnez Ajouter une nouvelle revendication pour ajouter une nouvelle revendication. Indiquez un nom pour la revendication à émettre, par exemple dateOfBirth.

  2. Sous Source, sélectionnez Attribut, puis choisissez customClaimsProvider.dateOfBirth dans la zone de liste déroulante Attribut de source.

    Capture d’écran montrant comment ajouter un mappage de revendication à votre application.

  3. Sélectionnez Enregistrer.

  4. Répétez ce processus pour ajouter les customClaimsProvider.customRoles, customClaimsProvider.apiVersion et customClaimsProvider.correlationId attributs et le nom correspondant. Il est judicieux de faire correspondre le nom de la revendication au nom de l’attribut.

Étape 4 : 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. Choisissez l’un des onglets suivants en fonction de votre type de locataire.

Remarque

Si l’application de fonction Azure est hébergée dans un autre locataire Azure que celui dans lequel votre extension d’authentification personnalisée est enregistrée, cliquez sur l’onglet Open ID Connect.

4.1 Utilisation du fournisseur d’identité Microsoft Entra

Suivez les étapes suivantes pour ajouter Microsoft Entra en tant que fournisseur d’identité à votre application de fonction Azure.

  1. Dans le Portail Azure, recherchez et sélectionnez l’application de fonction que vous avez publiée précédemment.

  2. Sous Paramètres, sélectionnez Authentication.

  3. Sélectionnez Ajouter un fournisseur d'identité.

  4. Sélectionnez Microsoft en tant que fournisseur d'identité.

  5. Sélectionnez Workforce comme type de locataire.

  6. Sous Inscription d’application, sélectionnez Choisir une inscription d’application existante dans ce répertoire, pour le type d’inscription d’application API, puis choisissez l’inscription d’application API des événements d’authentification Azure Functionsque vous avez créée précédemment lors de l’inscription du fournisseur de revendications personnalisées.

  7. Entrez l’URL de l’émetteur suivante, https://login.microsoftonline.com/{tenantId}/v2.0, où {tenantId} est l’ID de locataire de votre locataire de personnel.

  8. Sous Exigence pour l’application cliente, sélectionnez Autoriser les demandes à partir d’applications clientes spécifiques et entrez 99045fe1-7639-4a75-9d4a-577b6ca3810f.

  9. Sous Exigence pour le locataire, sélectionnez Autoriser les demandes à partir de locataires spécifiques et entrez votre ID de locataire employé.

  10. Sous Requêtes non authentifiées, sélectionnez HTTP 401 Non autorisé comme fournisseur d’identité.

  11. Désélectionnez l’option Magasin de jetons.

  12. Sélectionnez Ajouter pour ajouter l’authentification à votre fonction Azure.

    Capture d’écran montrant comment ajouter l’authentification à votre application de fonction dans un locataire de main-d’œuvre.

4.2 Utilisation du fournisseur d’identité OpenID Connect

Si vous avez configuré le fournisseur d’identité Microsoft, 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 :

Créer une clé secrète client

  1. Sur la page Accueil du Portail Azure, sélectionnez Microsoft Entra ID>Inscriptions d'applications.
  2. Sélectionnez l’inscription d’applicationAPI des événements d’authentification Azure Functions que vous avez créée précédemment.
  3. Sélectionnez Certificats et secrets>Clés secrètes client>Nouvelle clé secrète client.
  4. Sélectionnez une date d’expiration pour le secret ou spécifiez une durée de vie personnalisée, ajoutez une description et sélectionnez Ajouter.
  5. 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.

Ajoutez le fournisseur d’identité OpenID Connect à votre application de fonction Azure.

  1. Recherchez et sélectionnez l’application de fonction que vous avez publiée précédemment.

  2. Sous Paramètres, sélectionnez Authentication.

  3. Sélectionnez Ajouter un fournisseur d'identité.

  4. Sélectionnez OpenID Connect en tant que fournisseur d'identité.

  5. Fournissez un nom, tel que Contoso Microsoft Entra ID.

  6. 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
    
  7. Sous Inscription de l’application, entrez l’ID d’application (ID client) de l’inscription de l’application API des événements d’authentificationd’Azure Functions que vous avez créée précédemment.

  8. Retourner à la fonction Azure, sous l’inscription de l’application, entrez le secret du client.

  9. Désélectionnez l’option Magasin de jetons.

  10. Sélectionnez Ajouter pour ajouter le fournisseur d’identité OpenID Connect.

Étape 5 : test de l’application

Pour tester votre fournisseur de revendications personnalisées, procédez comme suit :

  1. Ouvrez un nouveau navigateur privé et naviguez et connectez-vous à l’URL suivante.

    https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize?client_id={App_to_enrich_ID}&response_type=id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
    
  2. Remplacez {tenantId} votre ID de locataire, votre nom de locataire ou l’un de vos noms de domaine vérifiés. Par exemple : contoso.onmicrosoft.com.

  3. Remplacer {App_to_enrich_ID} par l’ID du client de l’application My Test.

  4. Une fois connecté, votre jeton décodé vous sera présenté à https://jwt.ms. Validez le fait que les revendications de la fonction Azure sont présentées dans le jeton décodé, par exemple, dateOfBirth.

Voir aussi