使用Azure Active Directory OAuth时,没有给出名称或姓氏声明

时间:2016-08-22 22:23:00

标签: asp.net-mvc azure oauth-2.0 azure-active-directory

我们使用Azure Active Directory验证我们的MVC应用程序,但我们在ClaimsPrincipal中获得的唯一信息是名称和组成员身份。

我们还需要访问给定姓名和姓氏的用户。关于我们如何解决这个问题的任何指示?

1 个答案:

答案 0 :(得分:1)

OpenID Connect引入了一个id_token(这是一个JWT)。

查看documentation,id_token包含一些可能匹配的声明:

  • given_name:提供第一个或#34;给出"用户名,在Azure AD用户对象上设置。
  • family_name:提供Azure AD用户对象中定义的用户的姓氏,姓氏或系列名称。
  • unique_name:提供标识令牌主题的人类可读值。此值不保证在租户中是唯一的,并且仅用于显示目的。

因此,在您的控制器中,您可以访问这些声明:

using System.Security.Claims;
...
var identity = (ClaimsIdentity)User.Identity;
var lastName = identity.Claims.First(
    c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname").Value;
var firstName = identity.Claims.First(
    c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname").Value;
var displayName = identity.Claims.First(c => c.Type == "name").Value;

这些声明对应于Azure AD中的名字,姓氏和显示名称:

Azure AD Basic User Information