首页 > 解决方案 > 更改密码 Azure AD B2C

问题描述

我已经能够创建 Azure Functions App 来管理 Azure B2C 用户。我可以使用 client_credentials Flow 创建新用户并完美更新配置文件。但是,当我使用带有正文的 PATCH 请求更改密码时:

{
  passwordProfile: {
     password: 'password-value',
     forceChangePasswordNextSignIn: false
     },
  passwordPolicies: "DisablePasswordExpiration"
}

我收到此错误:

 {code: 'Authorization_RequestDenied', message: 'Insufficient privileges to complete the operation.'}

我对此进行了一些研究,并发现更新密码需要委托权限“Directory.AccessAsUser.All”。在前端应用程序中,我使用 B2CLogin 流登录,因此访问令牌与 Graph API 不兼容。此外,“Directory.AccessAsUser.All”在 B2C 应用程序的应用程序级别不存在。因此,我也不能将补丁请求与 client_credentials 流一起使用。根据一些建议,该过程可以由 Azure AD PowerShell 通过分配“公司管理员”角色来完成。但是,我还没有找到通过 Azure Function 重置密码的解决方案。分步解决方案(如果存在)对我来说真的很有帮助,因为我对 Azure 服务还比较陌生。

标签: azure-ad-b2cchange-passwordclientcredential

解决方案


最简单的方法是将全局管理员角色分配给 Azure 门户上的服务主体。

转到Azure 门户- Azure Active Directory -角色和管理员

搜索“全局管理员”并选择它。

在此处输入图像描述

点击+添加分配。然后搜索您的服务主体。

在此处输入图像描述

请注意,“申请仅适用于活动作业。”。

因此,单击“下一步>”后,为分配类型选择“活动”。

在此处输入图像描述

分配完成后,您可以使用 client_credentials 流程更新密码。

@Jas Suri 提到的Add-AzureADDirectoryRoleMember也可以做同样的事情。


推荐阅读