使用 Microsoft Graph PowerShell 管理 Azure AD B2C 自定义策略

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

Microsoft Graph PowerShell 为 Azure AD B2C 租户中的命令行和基于脚本的自定义策略管理提供了多个 cmdlet。 了解如何使用 Microsoft Graph PowerShell SDK:

  • 列出 Azure AD B2C 租户中的自定义策略
  • 从租户中下载策略
  • 通过覆盖现有策略的内容来更新现有策略
  • 将新策略上传到 Azure AD B2C 租户
  • 从租户中删除自定义策略

先决条件

将 PowerShell 会话连接到 B2C 租户

若要在 Azure AD B2C 租户中使用自定义策略,首先需要使用 Connect-MgGraph 命令将 PowerShell 会话连接到租户。

执行以下命令。 使用目录中分配有 B2C IEF 策略管理员角色的帐户进行登录。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId "{b2c-tenant-name}.partner.onmschina.cn" -Scopes "Policy.ReadWrite.TrustFramework"

显示成功登录的示例命令输出:

Welcome to Microsoft Graph!

Connected via delegated access using 64636d5d-8eb5-42c9-b9eb-f53754c5571f
Readme: https://aka.ms/graph/sdk/powershell
SDK Docs: https://aka.ms/graph/sdk/powershell/docs
API Docs: https://aka.ms/graph/docs

NOTE: You can use the -NoWelcome parameter to suppress this message.

列出租户中的所有自定义策略

通过识别自定义策略,Azure AD B2C 管理员可以查看、管理并向其操作添加业务逻辑。 使用 Get-MgBetaTrustFrameworkPolicy 命令返回 Azure AD B2C 租户中自定义策略 ID 的列表。

Get-MgBetaTrustFrameworkPolicy

示例命令输出:

Id
--
B2C_1A_TrustFrameworkBase
B2C_1A_TrustFrameworkExtensions
B2C_1A_signup_signin
B2C_1A_ProfileEdit
B2C_1A_PasswordReset

下载政策

查看策略 ID 的列表后,可以使用 Get-MgBetaTrustFrameworkPolicy 指定特定策略来下载其内容。

Get-MgBetaTrustFrameworkPolicy [-TrustFrameworkPolicyId <policyId>]

在此示例中,ID 为 B2C_1A_signup_signin 的策略被下载:

<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="contosob2c.partner.onmschina.cn" PolicyId="B2C_1A_signup_signin" PublicPolicyUri="http://contosob2c.partner.onmschina.cn/B2C_1A_signup_signin" TenantObjectId="00000000-0000-0000-0000-000000000000">
  <BasePolicy>
    <TenantId>contosob2c.partner.onmschina.cn</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
</TrustFrameworkPolicy>

若要在本地编辑策略内容,请通过管道将命令输出传递给文件,然后在你喜欢的编辑器中打开该文件。

更新现有策略

编辑已创建或下载的策略文件后,可以使用 Update-MgBetaTrustFrameworkPolicy 命令将更新的策略发布到 Azure AD B2C。

如果你使用 Azure AD B2C 租户中已存在的策略的 ID 发出 Update-MgBetaTrustFrameworkPolicy 命令,则将覆盖该策略的内容。

Update-MgBetaTrustFrameworkPolicy -TrustFrameworkPolicyId <policyId> -BodyParameter @{trustFrameworkPolicy = "<policy file path>"}

示例命令:

# Update an existing policy from file
Update-MgBetaTrustFrameworkPolicy -TrustFrameworkPolicyId B2C_1A_signup_signin -BodyParameter @{trustFrameworkPolicy = C:\B2C_1A_signup_signin.xml}

上传新策略

对生产中运行的自定义策略进行更改时,可能需要发布用于回退或 A/B 测试方案的多个版本的策略。 或者,你可能想要创建现有策略的副本,通过一些小的更改对其进行修改,然后将其作为新策略上传,供其他应用程序使用。

使用 New-MgBetaTrustFrameworkPolicy 命令上传新策略:

New-MgBetaTrustFrameworkPolicy -BodyParameter @{trustFrameworkPolicy = "<policy file path>"}

示例命令:

# Add new policy from file
New-MgBetaTrustFrameworkPolicy -BodyParameter @{trustFrameworkPolicy = C:\B2C_1A_signup_signin.xml }

删除自定义策略

为了维护干净的作生命周期,建议定期删除未使用的自定义策略。 例如,在执行迁移到新策略集并验证新策略功能后,可能需要删除旧策略版本。 此外,如果尝试发布一组自定义策略并收到错误,则删除作为失败版本的一部分创建的策略可能有意义。

使用 Remove-MgBetaTrustFrameworkPolicy 命令从租户中删除策略。

Remove-MgBetaTrustFrameworkPolicy -TrustFrameworkPolicyId <policyId>

示例命令:

# Delete an existing policy
Remove-MgBetaTrustFrameworkPolicy -TrustFrameworkPolicyId B2C_1A_signup_signin

排查策略上传问题

尝试发布新的自定义策略或更新现有策略时,策略文件继承链中的 XML 格式设置和错误不正确可能会导致验证失败。

有关自定义策略故障排除的信息,请参阅 排查 Azure AD B2C 自定义策略和标识体验框架问题。