更改密码 Azure AD B2C

Liq*_*per 4 change-password azure-ad-b2c clientcredential

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

{
  passwordProfile: {
     password: 'password-value',
     forceChangePasswordNextSignIn: false
     },
  passwordPolicies: "DisablePasswordExpiration"
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

 {code: 'Authorization_RequestDenied', message: 'Insufficient privileges to complete the operation.'}
Run Code Online (Sandbox Code Playgroud)

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

All*_* Wu 5

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

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

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

在此输入图像描述

单击+添加作业。然后搜索您的服务主体。

在此输入图像描述

请注意“仅允许针对有效作业进行申请。”。

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

在此输入图像描述

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

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