我正在尝试通过非交互式登录找到用于重置Azure Active目录中用户密码(所有用户,而不仅仅是经过身份验证的用户)的解决方案。
现在看起来这只能通过使用服务主体登录的powershell的MSOnline Set-AzureADUserPassword
cmdlet来实现。
我想找到一个使用API端点的解决方案,所以我可以使用C#。我发现的最接近的解决方案是Microsoft Graph API,但在设置之后,我意识到我只能通过交互式登录和同意流重置密码。它不允许通过非交互式。
我的下一次尝试是使用Azure AD endpoint,但我担心的是我看到的相同消息建议我们使用Microsoft图谱API。这是否意味着azure ad endpoint将会消失?
是否有推荐的方法而不使用PowerShell?
答案 0 :(得分:4)
您可以更新用户的passwordProfile
属性以重置用户密码:
PATCH https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}
Content-type: application/json
Authorization: bearer TOKEN
{
"passwordProfile":
{
"forceChangePasswordNextSignIn":false,
"password": "XXXXXXXXX"
}
}
正如document中的解释:
更新passwordProfile属性时,需要以下权限:Directory.AccessAsUser.All。
然后您可以使用Resource Owner Flow,因为需求需要非交互式登录。要启用Directory.AccessAsUser.All
委托权限,您应该:
在Azure AD应用的Access directory as the signed in user
刀片中添加Microsoft Graph的Required permissions
权限:
该权限需要管理员同意,请点击您的管理员帐户Grant Permissions
按钮。
然后,您可以使用资源所有者流获取Microsoft Graph的访问令牌,Directory.AccessAsUser.All
权限允许管理员更改您租户中的其他用户密码。
这是否意味着azure ad endpoint将会消失?
目前,Microsoft Graph支持Azure AD Graph支持的大多数目录功能,但不是全部。请参阅Gaps between Microsoft Graph and Azure AD Graph