azure-ad-b2c - 更改密码 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 门户上的服务主体。
转到Azure 门户- Azure Active Directory -角色和管理员。
搜索“全局管理员”并选择它。
点击+添加分配。然后搜索您的服务主体。
请注意,“申请仅适用于活动作业。”。
因此,单击“下一步>”后,为分配类型选择“活动”。
分配完成后,您可以使用 client_credentials 流程更新密码。
推荐阅读
- javascript - 无法再次从区域设置存储中获取数据
- java - 使用动态投影对子实体进行 Spring JPA 分页
- c# - 确定 excel 单元格是否包含公式(VSTO:C# 或 VB)
- python - BST(二叉搜索树)元素过滤功能不断遇到“NoneType”对象
- reactjs - next-i18next 翻译整个应用和子页面
- typescript - 如何覆盖完全不同类型的包中的@types?
- python - Windows 上的詹金斯奴隶
- xcode - 在 xcode 内的情节提要中显示状态栏
- python - 在受限时跟踪鼠标移动
- patch - 补丁失败 - 没有这样的文件或目录,但文件存在并且实际应用了补丁