1

Nous avons une application Asp.Net 4.5 MVC utilisant Asp.Net Identity pour gérer notre base de données clients. Nous utilisons actuellement l'authentification de compte Microsoft. Nous envisageons d'utiliser OpenId Connect pour que les clients disposant d'un compte professionnel/scolaire puissent également se connecter au Add sign-in to an .NET MVC web app.Quel est l'ID unique pour les utilisateurs dans OpenId Connect

L'authentification de compte Microsoft renvoie ProviderKey comme identifiant unique de l'utilisateur connecté. Il est mappé sur UserId dans notre base de données client.

OpenId Connect ne semble pas retourner un ProviderKey, mais NameIdentifier semble prometteur ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.NameIdentifier)?.Value;

est-NameIdentifier l'identifiant unique de l'utilisateur retourné par OpenId Connect? Peut-il être utilisé de manière fiable pour identifier de manière unique un utilisateur au fil du temps?

+0

Est-ce que cette réponse aide: http://stackoverflow.com/a/36787635/1658906? – juunas

Répondre

3

Est-ce que NameIdentifier est l'identifiant unique de l'utilisateur renvoyé par OpenId Connect? Peut-il être utilisé de manière fiable pour identifier de manière unique un utilisateur au fil du temps?

autant que je sache, la NameIdentifier est mappée à partir de NameId ou Sub de la revendication id_token (voir here). Et pour le id_token pour Azure AD, il a utilisé la revendication Sub.

et de la description de sub claim:

identifie les principaux dont le jeton affirme informations, telles que l'utilisateur d'une application. Cette valeur est immuable et ne peut pas être réaffectée ou réutilisée, elle peut donc être utilisée pour effectuer des vérifications d'autorisation en toute sécurité. Étant donné que le sujet est toujours présent dans les jetons Azure AD, nous avons recommandé d'utiliser cette valeur dans un système d'autorisation général.

La réponse est oui, elle permet d'identifier de façon fiable un utilisateur dans le temps.