1

通过 MS 网站上的示例,https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-web-dotnet/

用户成功登录后,我似乎无法获得策略上设置的声明(在 Azure 门户中)。

这里的声明对象始终为空。

var type = ClaimsPrincipal.Current.Identities.First().NameClaimType;
var claim = ClaimsPrincipal.Current.FindFirst(type);

我希望我错过了什么...

4

3 回答 3

1

你检查 ClaimsPrincipal.Current.Claims 吗?这些值存储在 ClaimsPrincipal.Current.Claims 中。我想检查您是否无法从声明页面中的以下代码中获取值。

@foreach (Claim claim in ClaimsPrincipal.Current.Claims)
    {
        <tr>
            <td class="claim-type claim-data">@claim.Type</td>
            <td class="claim-data">@claim.Value</td>
        </tr>
    }
于 2016-04-06T10:06:25.993 回答
0

您的声明身份中不存在 NameIdentifier。

Azure b2c 不提供此声明。

于 2016-09-26T04:58:24.843 回答
0

你试试下面的代码,它工作得很好。

ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier")

或者

ClaimsPrincipal.Current.Claims.First(x => x.Type == "extension_ClientId") 
于 2017-08-30T06:44:49.097 回答