You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Microsoft Graph C# SDK代用户修改Azure B2C账户密码?

Azure B2C用户密码修改问题解答

1. 能否通过应用权限代用户修改密码?

你当前使用客户端凭据(Client Secret)模式调用ChangePassword接口会报错,原因是这个接口仅支持用户委托权限调用,不支持应用权限。

Azure AD B2C中,应用身份(后台服务)无法直接代用户修改密码——即便配置全局管理员权限的应用,也不推荐用于业务场景,而且ChangePassword接口本身的设计逻辑就是要求用户验证当前密码后自行修改。

2. 符合SPA场景的有效实现方案

结合你的SPA+后端架构,要实现用户无需离开应用修改密码,流程如下:

  • 前端SPA通过重定向流获取用户的委托访问令牌,需提前在Azure B2C应用注册中配置User.ReadWrite.All(或User.ReadWrite)委托权限
  • 前端将用户输入的当前密码、新密码,以及访问令牌一同传递给后端
  • 后端使用该用户委托令牌初始化GraphServiceClient,再调用修改密码接口

后端代码示例

// 从请求中获取前端传递的用户访问令牌userAccessToken
var authProvider = new DelegateAuthenticationProvider(async (requestMessage) =>
{
    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", userAccessToken);
});

var _client = new GraphServiceClient(authProvider);

// 执行密码修改操作
await _client.Users["userId"].ChangePassword(currentPassword, newPassword).Request().PostAsync();

3. 权限配置要点

  • 在Azure B2C应用注册中,为SPA应用添加委托权限:User.ReadWrite.All(ChangePassword接口依赖该权限)
  • SPA登录时,请求的权限范围需包含https://graph.microsoft.com/User.ReadWrite.All
  • 后端无需再使用客户端凭据,通过转发用户的访问令牌调用Graph API,此时接口会识别为用户自身操作,允许修改密码

内容的提问来源于stack exchange,提问作者del

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:21:07