访问Azure B2C身份时访问电子邮件(具有成员用户)

时间:2020-07-27 22:10:40

标签: azure asp.net-identity identityserver4 openid-connect azure-ad-b2c

我正在使用Identity Server 4并使用以下范围,但是我无法访问声明电子邮件。

              .AddOpenIdConnect("AzureB2C", "External Users AD_B2C",
                          options =>
                          {
                              options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                              options.Authority = appConfig.AzureB2C.Authority;
                              options.ClientId = appConfig.AzureB2C.ClientId;
                              options.ClientSecret = appConfig.AzureB2C.Secret;
                              options.ResponseType = OpenIdConnectResponseType.Code;
                              options.Scope.Add("openid");
                              options.Scope.Add("email");
                              options.Scope.Add("profile");[![enter image description here][1]][1]

openid配置确实提到了受支持的电子邮件,但我也无法获得此声明

“ claims_supported”:[ “名称”, “电子邮件”, “给定的名称”, “ idp”, “姓”, “ oid”, “子”, “ idp_access_token”, “ tfp”, “ iss”, “我在”, “ exp”, “ aud”, “ acr”, “ nonce”, “ auth_time” ]

enter image description here

1 个答案:

答案 0 :(得分:0)

首先,您需要add claimslink展示了成功登录azure广告b2c后如何在“声明”中获取电子邮件。

注意有关电子邮件声明:

如果用户通过社交身份提供商进行身份验证,则电子邮件地址将存储在 otherMails 属性中。如果本地帐户基于用户名,则电子邮件地址存储在强身份验证详细信息属性中。如果本地帐户基于电子邮件地址,则该电子邮件地址存储在 signInNames 属性中。

只有otherMails和signInNames属性是通过Microsoft Graph API公开的。强身份验证详细信息属性中的电子邮件地址不可用。


如果要获取id_token声明中的电子邮件,必须在门户中选择Email Addresses(导航到userFlow-> Application声明)。您可以运行用户流进行测试。

enter image description here