8 votes

Quelles revendications JWT des jetons Azure AD peuvent être utilisées en toute sécurité pour les mappings d'utilisateurs ?

Nous utilisons OAuth 2.0 pour obtenir des jetons JWT à partir d'un Azure AD. Dans notre application, nous avons utilisé la valeur de la revendication 'upn' pour identifier un nom d'utilisateur interne associé.

En Référence du jeton Azure AD documente le upn comme un "User Principal Name", qui, d'après ce que je comprends, est un nom d'utilisateur suivant le format addr-spec (c'est-à-dire user@domain). Cela fonctionne bien pour les utilisateurs créés dans le Tenant Azure AD. Cependant, à ma grande surprise, le upn semble disparaître si l'utilisateur authentifié est synchronisé à partir d'un autre AD. Ce comportement ne semble être documenté nulle part.

  1. Où puis-je trouver de la documentation sur le moment où le upn est garanti dans un jeton ?
  2. Quelles sont les allégations alternatives fiables que je peux utiliser à la place ? De préférence, des revendications garanties sous la forme "utilisateur/domaine", car c'est ce qui correspond le mieux à notre modèle. J'ai envisagé les éléments suivants :
    • nom_unique : J'ai seulement observé que cela était égal à upn mais je ne suis pas sûr d'où cela vient. De façon déroutante, le référence symbolique dit : Cette valeur est pas garanti pour être unique au sein d'un locataire et est conçu pour être utilisé uniquement à des fins d'affichage. (c'est moi qui souligne)
    • e-mail : Cela aussi semble être égal à upn mais encore une fois, d'où vient-elle ? Dans le portail de gestion, j'ai essayé de mettre une valeur différente dans chaque champ relatif à l'email associé à l'utilisateur, mais aucune d'entre elles ne semble être propagée à cette demande. Il apparaît donc que ce champ est pas vraiment un email .

Je veux être absolument sûr que notre application sera capable de gérer tous les jetons émis par Azure AD. J'hésite donc à utiliser l'une ou l'autre des déclarations ci-dessus à moins de disposer d'une documentation expliquant leur sémantique réelle.

2voto

Fei Xue Points 10851
  1. Où puis-je trouver de la documentation sur les cas où l'upn est garanti dans un jeton ?

Il n'existe pas de document indiquant comment cette affirmation est garantie. Sur la base du test, il est comme vous l'avez mentionné que seulement être émis lorsque les utilisateurs ne sont pas un utilisateur externe.

Quelles sont les allégations alternatives fiables que je peux utiliser à la place ? De préférence, des revendications garanties sous la forme "utilisateur/domaine", car c'est ce qui correspond le mieux à notre modèle. J'ai envisagé les éléments suivants :

Nous pouvons utiliser le oid revendiquent de cartographier les utilisateurs. Cette prétention est contient un identifiant unique d'un objet dans Azure AD. Cette valeur est immuable et ne peut pas être réaffectée ou réutilisée. Utilisez l'identifiant d'objet pour identifier un objet dans les requêtes à Azure AD.

Et si vous avez des commentaires sur le document Azure, vous pouvez essayer de soumettre vos commentaires à partir de Cette page est-elle utile ? en bas de page à droite pour aider à améliorer le document. enter image description here

0voto

Parakh Points 823

S'il est assez courant que le NUP et l'adresse électronique principale d'un utilisateur soient identiques, cela n'est pas garanti (pas plus que l'existence du NUP, comme vous l'avez remarqué). Vous devez donc partir du principe que UPN != adresse électronique. Si vous avez besoin de connaître l'adresse électronique, vous devez faire un appel graphique et effectuer une recherche en utilisant l'oid.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X