更改密码 Azure AD B2C

Change Password Azure AD B2C

我已经能够创建 Azure Functions 应用程序来管理 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 函数重置密码的解决方案。分步解决方案(如果存在)对我来说真的很有帮助,因为我对 Azure 服务还比较陌生。

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

转到 Azure Portal - Azure Active Directory - 角色和管理员.

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

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

请注意“只允许申请有效的作业。”。

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

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

@Jas Suri提到的

Add-AzureADDirectoryRoleMember也可以做同样的事情。