重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
Microsoft Graph PowerShell 为 Azure AD B2C 租户中的命令行和基于脚本的自定义策略管理提供了多个 cmdlet。 了解如何使用 Microsoft Graph PowerShell SDK:
- 列出 Azure AD B2C 租户中的自定义策略
- 从租户中下载策略
- 通过覆盖现有策略的内容来更新现有策略
- 将新策略上传到 Azure AD B2C 租户
- 从租户中删除自定义策略
- Azure AD B2C 租户,以及目录中具有 B2C IEF 策略管理员角色的用户的凭据
- 已上传到租户的自定义策略
- Microsoft Graph PowerShell SDK beta 模块
若要在 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 自定义策略和标识体验框架问题。