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

Microsoft Graph PowerShell 提供了多个 cmdlet 来基于命令行和脚本对 Azure AD B2C 租户中的自定义策略进行管理。 了解如何使用 Azure AD PowerShell 模块执行以下操作:

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

必备条件

将 PowerShell 会话连接到 B2C 租户

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

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

Connect-MgGraph -Environment China -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 自定义策略和 Identity Experience Framework 问题