You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C输出email声明为数组 无需自定义策略添加输出声明方案

解答

关于是否必须上传完整自定义策略才能返回标准email声明

  • 不需要。如果你当前使用的是Azure B2C预置的内置用户流(注册登录、密码重置、资料编辑这类官方预制策略),完全不用碰自定义策略:直接在Azure门户进入对应用户流的配置页,找到「应用程序声明」板块,勾选电子邮件地址选项后保存,策略就会自动返回符合OpenID规范的单值email声明,以及兼容WS-Fed标准的http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress声明,不会再只返回数组类型的email_addresses字段。
    配置生效后,本地账号场景会直接返回用户注册时的登录邮箱作为单值;第三方社交IdP登录场景,只要在对应IdP配置页完成邮箱声明的映射,也会正常返回单值邮箱。

关于是否有简化方案修改ReplyingParty配置、不用编辑整套5个策略文件

  • 有两类低操作成本方案,完全不需要从零搭建整套自定义策略、也不用拆分修改全量策略包:
    1. 优先选内置用户流的声明勾选配置,全程在门户操作,不需要写任何XML代码,配置后1分钟左右生效,是成本最低的实现方式。
    2. 如果你因为业务需求必须使用自定义策略,也不需要下载、编辑、重新上传TrustFrameworkBase、TrustFrameworkExtensions、LocalAccounts、SocialAccounts、SignUpOrSignIn这整套5个策略文件,只需要写一个最小化的增量信赖方(RP)策略文件单独上传即可。这个文件只需要继承你租户内已经上传好的现有扩展策略,在输出声明节点加上需要的标准email声明就行,文件大小不到1KB,上传后直接用这个新RP策略的ID对接应用即可。

可直接复用的最小RP策略示例如下,替换占位符即可使用:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="替换为你的B2C租户全域名,比如yourtenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin_standard_email"
  PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_signin_standard_email">
  <BasePolicy>
    <TenantId>替换为你的B2C租户全域名,和上面保持一致</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> <!-- 替换为你租户内已存在的扩展策略ID -->
  </BasePolicy>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn"/> <!-- 替换为你实际使用的用户旅程ID,默认注册登录旅程用这个值即可 -->
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect"/>
      <OutputClaims>
        <!-- 保留你原有需要返回的默认声明 -->
        <OutputClaim ClaimTypeReferenceId="displayName"/>
        <OutputClaim ClaimTypeReferenceId="givenName"/>
        <OutputClaim ClaimTypeReferenceId="surname"/>
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}"/>
        <!-- 仅添加下面两行即可返回标准单值email声明 -->
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
        <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"/>
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub"/>
    </TechnicalProfile>
  </RelyingParty>
</TrustFrameworkPolicy>

只要你的租户之前已经上传过官方Starter Pack中的基础策略和扩展策略,这个单独的RP文件上传后即可直接使用,不需要修改任何已有策略文件,操作成本和配置内置用户流基本一致。

内容的提问来源于stack exchange,提问作者Arra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:54:18