【问题标题】:How I can change password in Azure AD如何在 Azure AD 中更改密码
【发布时间】:2022-01-20 14:06:32
【问题描述】:

我正在使用 Microsoft azure ad 身份验证。当我尝试使用图形 api 更改用户密码时,它会给我一个错误

我还设置了更改密码所需的权限,但它也不起作用

我在node.js中写过这样的代码

const changePassword = {
            currentPassword: ctx.request.body.currentPassword,
            newPassword: ctx.request.body.newPassword
        };
        const client = createAuthenticated.createAuthenticatedClient();
        await client.api('/me/changePassword').post(changePassword);

【问题讨论】:

  • 添加 API 权限后,您需要为您的租户授予管理员同意。
  • @RahulKumarShaw-MT 是的,已授予更改 Directory.AccessAsUser.All 所需的权限
  • 同时提供 Directory.ReadWriteAll。
  • 因为您正在更改用户密码,所以它也应该具有写入权限。
  • 已授予所有权限但无法正常工作,同样的错误

标签: node.js azure azure-active-directory microsoft-graph-api social-authentication


【解决方案1】:

修改密码api只能支持delegate权限,已经在api document中注明,也出现在你的报错信息中。

Delegate api 权限是指不能使用客户端凭证流生成访问令牌/凭证调用此api,只能使用ropc 流或auth 代码流来生成访问令牌。

我想您已经阅读了this sample 来调用 api,但是您没有选择正确的身份验证提供程序。如果您的应用是需要用户登录的网站,那么您可以选择this one。但请注意,client-credential-flow 不适合这种情况。

=======================更新====================

我this answer中的html+js代码提供了一个集成msal的示例,让用户登录并生成访问令牌以调用graph api。

将AzureMgmtScops 值更改为scopes:["Directory.AccessAsUser.All"] 然后它会返回一个具有此权限的访问令牌,然后请使用此令牌发送这样的发布请求,我认为您可以完成您的任务。但是这种方式不会改变你的服务器端,它适用于前后端分离的结构。

【讨论】:

  • 那我该如何实现,你能帮忙吗?
  • 我在答案中提供的链接包含示例代码,您是否可以按照文档先测试一下?我没有您的场景的完整示例。
  • yes Tiny,我已经用你的流程测试过了。但我无法为客户端生成委托身份验证流程
  • 你可以生成委托认证流程,那么现在有什么问题?
  • 遇到了关于生成 authProvider 的问题? i.stack.imgur.com/94xhv.png
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2018-01-16
  • 2015-09-09
相关资源
最近更新 更多