图谱API - 我们正在尝试重置office 365 azure广告用户的密码,因为它在守护程序app \ service中使用 client credentials grant flow从azure广告获取访问令牌,但无法重置用户的密码 . 它响应“ Insufficient privileges to complete the operation ”,我已向应用程序授予以下权限 .
1)User.ReadWrite.All - 读取和写入所有用户完整配置文件(应用程序委派权限)2)Directory.AccessAsUser.All - 作为登录用户访问目录(委托权限)
我的O365应用程序是“多租户Web Api”应用程序,已获得管理员同意 . 我的应用程序的主要目的是将用户从我的Web应用程序(用户详细信息等)同步到Azure AD . 我的应用程序能够同步除密码之外的所有用户配置文件详细信息
可以由租户管理员授权的Daemon服务应用程序重置组织中用户的密码吗?
谢谢
2 回答
目前,Microsoft Graph(和AzureAD Graph)不公开任何仅应用程序权限(可由守护程序应用程序使用)来重置用户密码 . 这是一种特别特权的操作,很容易被滥用 . 只要登录用户是管理员,我们就会在交互式委派流程中使用
Directory.AccessAsUser.All
支持此操作 .如果您需要重置密码的应用程序权限,请在UserVoice上申请:https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/category/101632-microsoft-graph-o365-rest-apis
希望这可以帮助,
我遇到了同样的问题,需要15天才能找到解决方案 . 虽然权限是从应用程序提供的,但是无法重置用户的密码 . 为此,必须提供“公司管理员”的角色
我按照接下来的步骤进行了操作:
编写下一个PowerShell cmdlet
安装模块AzureAD
Connect-AzureAD
$ app = Get-AzureADServicePrincipal -SearchString "AppName"
$ role = Get-AzureADDirectoryRole | Where-Object {$ _ . DisplayName -eq "Company Administrator"}
Add-AzureADDirectoryRoleMember -ObjectId $ role.ObjectId -RefObjectId $ app.ObjectId
注意:在AD中按应用程序名称更改“AppName” . 使用具有GlobalAdministrator权限的用户连接到AzureAD .