我正在使用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” ]
答案 0 :(得分:0)
首先,您需要add claims。 link展示了成功登录azure广告b2c后如何在“声明”中获取电子邮件。
注意有关电子邮件声明:
如果用户通过社交身份提供商进行身份验证,则电子邮件地址将存储在 otherMails 属性中。如果本地帐户基于用户名,则电子邮件地址存储在强身份验证详细信息属性中。如果本地帐户基于电子邮件地址,则该电子邮件地址存储在 signInNames 属性中。
只有otherMails和signInNames属性是通过Microsoft Graph API公开的。强身份验证详细信息属性中的电子邮件地址不可用。
如果要获取id_token声明中的电子邮件,必须在门户中选择Email Addresses
(导航到userFlow-> Application声明)。您可以运行用户流进行测试。