Azure AD B2C:User.Identity.Name为null,但User.Identity.m_instance_claims [9]具有名称

时间:2018-03-24 21:08:18

标签: oauth-2.0 azure-active-directory azure-ad-b2c

将用户身份验证到我的Azure AD B2C Web应用程序后,我尝试检索User.Identity.Name;但是,它是空的。但是,User.Identity.m_instance_claims[9],如下面的屏幕截图所示,确实有正确的名称。

这怎么可能?如何获得User.Identity.Name = User.Identity.m_instance_claims[9]

(请注意,后者是私有变量,不能用作User.Identity.Name的替代。 enter image description here

更新

我还在Web.config文件中添加了以下内容:

<configuration>  
  <configSections>  
    <!--WIF 4.5 sections -->  
    <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
    <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  </configSections>  

...

  <system.identityModel>
    <identityConfiguration>
      <securityTokenHandlers>
        <add type="System.IdentityModel.Tokens.SamlSecurityTokenHandler, System.IdentityModel">
          <samlSecurityTokenRequirement>
            <nameClaimType value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" />
          </samlSecurityTokenRequirement>
        </add>
      </securityTokenHandlers>
    </identityConfiguration>
  </system.identityModel>
</configuration>

不幸的是,这仍然是User.Identity.Name = null

1 个答案:

答案 0 :(得分:1)

我相信您需要在web.config中设置正确的nameClaimType:

https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/windows-identity-foundation/nameclaimtype

<强>更新

除上述内容外,还缺少以下代码:

// Specify the claims to validate
TokenValidationParameters = new TokenValidationParameters
{
    NameClaimType = "name"
},

请参阅this link了解如何使用上述内容。