繁体   English   中英

Azure B2C 用户流中缺少 Email 声明

[英]Email claim missing in Azure B2C User Flow

我有 B2C 租户xxx.onmicrosoft.com和帐户admin@xxx.onmicrosoft.com

我有 API 连接器(Azure Function 称为 B2CRoleAssignment)在将应用程序声明包含在令牌(预览版)中之前被触发。

在此处输入图像描述

当我第一次尝试使用admin@xxx.onmicrosoft.com登录我的 SPA 应用程序时,这是我的 API 连接器(Azure 函数)收到的以下有效负载:

{
    "step":"PreTokenIssuance",
    "client_id":"XXXXYYYY-XXXX-YYYY-ZZZZ-d6b8da8e942a",
    "ui_locales":"en-US",
        "email":"admin@xxx.onmicrosoft.com",
    "objectId":"AAAABBBB-CCCC-DDDD-EEEE-ad37b0ec108e",
    "displayName":"admin"
}

当我关闭我的 SPA 应用程序并再次打开它时,这是 API 连接器(Azure 函数)接收的负载:

{
    "step":"PreTokenIssuance",
    "client_id":"XXXXYYYY-XXXX-YYYY-ZZZZ-d6b8da8e942a",
    "ui_locales":"en-US",
    "objectId":"AAAABBBB-CCCC-DDDD-EEEE-ad37b0ec108e",
    "displayName":"admin"
}

email 声明怎么不见了? 在我的注册和登录用户流程中,我选择了 Email 地址应用程序声明,但这似乎不起作用或根本没有做任何事情。

有趣的是,这似乎只是以@xxx.onmicrosoft.com结尾的帐户的问题。

• The email claim is missing during the sign in and signup user flow when selecting the API connector because the Azure function app is being considered by the Azure AD B2C as an untrusted domain website/application since the session is interrupted by closing and reopening the same因此,session 令牌可能立即被视为过期/无效 因此,省略了“电子邮件”声明。

因此,正因为如此, email 声明属性可能会在“application/json”文件中返回 null,因为它在列中的值可能缺失或未知 因此,我建议您使用自定义策略进行登录或注册,而不是 Azure AD B2C 控制台中的默认用户流 此外,请确保在登录和注册自定义策略启动包或需要进行编辑的默认自定义策略中,在自定义策略 output 声明中添加以下声明,以便您将收到“电子邮件”响应解码令牌中的一个属性,因为添加以下声明将允许您通过多个声明属性登录,并且在使用 email 以外的其他声明类型时,您可能不会收到 email 声明

  <!-- This was already here -->
  <OutputClaim ClaimTypeReferenceId="email" />
  <!-- Added claim -->
  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" 
  PartnerClaimType="email" />

要查找默认的自定义策略启动包,请参阅以下链接了解更多详细信息:-

https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack

此外,要了解有关上述问题及其公认解决方案的更多信息,请参阅以下社区链接:-

当 SSO 与 azure b2c 时,为什么 email 不与 api 连接器一起返回?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM