microsoft-graph-api - Microsoft.Graph.GraphServiceClient 允许我创建用户但不允许我更改密码
问题描述
我有一个由 Azure 中托管的 Angular SPA 和一些用于 API 的 Azure Functions 组成的系统。在一个管理应用程序中,我创建了一个应用程序,它允许管理员用户创建新的用户帐户,包括指定密码。这些新帐户也能够登录我创建的业务线应用程序。我们需要允许创建帐户的同一个人重置密码。出于某种原因,我编写的设置密码的代码不起作用。用户可以创建帐户(包括设置密码)似乎很奇怪,但由于某种原因,同一用户不能独立于创建用户帐户来设置密码。仅供参考,没有电子邮件,这些是用户帐户,因此无法请求重置密码。
这是错误:
{
"error": {
"code": "Authorization_RequestDenied",
"message": "Access to change password operation is denied.",
"innerError": {
"date": "2021-01-19T21:58:35",
"request-id": "a1bc5b50-83e9-47ae-97c7-bda4f524fa0e",
"client-request-id": "a1bc5b50-83e9-47ae-97c7-bda4f524fa0e"
}
}
}
这是我的代码:
//this is the method that works
public async Task<Microsoft.Graph.User> CreateUserAsync(string givenName,
string surname, string displayName, string userPrincipalName, string issuer,
string signInType, string initialPassword, GraphServiceClient graphClient)
{
var user = new Microsoft.Graph.User {
AccountEnabled = true,
GivenName = givenName,
Surname = surname,
DisplayName = displayName,
Identities = new List<ObjectIdentity>() {
new ObjectIdentity {
Issuer = issuer,
IssuerAssignedId = userPrincipalName,
SignInType = signInType
}
},
PasswordProfile = new PasswordProfile {
ForceChangePasswordNextSignIn = false,
Password = initialPassword
}
};
return await graphClient.Users
.Request()
.AddAsync(user);
}
//This one does not work, returns: Access to change password operation is denied.
public async Task<Microsoft.Graph.User> SetPasswordAsync(
string userName, string currentPassword, string newPassword, GraphServiceClient graphClient)
{
await graphClient.Users[userName].ChangePassword(currentPassword, newPassword).Request().PostAsync();
return something here;
}
解决方案
似乎这是这里的权限问题。功能:graphClient.Users[].ChangePassword()
基于reset password rest API,正如官方文档指出的那样,这里只有委托权限有效,并且UserAuthenticationMethod.ReadWrite.All
需要权限:。在我向我的应用授予此权限后:
如果您还有其他问题,请告诉我。
推荐阅读
- reactjs - 反应无法使用道具将值数组从子组件传递给父组件
- reactjs - 如何在 Safari 上修复 WebGl 中的着色器错误
- django-rest-framework - 姜戈休息。为嵌套对象列表创建自定义验证错误响应,必须返回无效值列表
- substrate - 使用 polkadot lib 的公钥/私钥加密?
- rest - SFCC-使用“sorting_rule”属性创建类别不能通过 API 工作
- javascript - 仅为文本区域编辑器(角度)中下拉菜单中出现的单词设置不同的颜色
- javascript - 并行 rxJs Observables,无需等待全部完成
- php - 如何解析xml输出
- c# - 如何对 Json 进行去串化并绑定到变量/属性 c#
- python - 如何使用我拥有的以下数据绘制时间序列图