0

我正在使用 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);
4

1 回答 1

0

修改密码api只能支持delegate权限,在api文档中有说明,也出现在你的报错信息中。

委托 api 权限意味着您不能使用客户端凭据流生成访问令牌/凭据来调用此 api,您只能使用诸如 ropc 流或 auth 代码流来生成访问令牌。

我认为您已阅读此示例来调用 api,但您没有选择正确的身份验证提供程序。如果您的应用是需要用户登录的网站,那么您可以选择这个。但请注意,客户端凭据流不适合这种情况。

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

我的这个答案中的 html+js 代码提供了一个示例,该示例集成了 msal 以让用户登录并生成用于调用图形 api 的访问令牌。

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

在此处输入图像描述

于 2022-01-20T02:35:29.050 回答