我们正在开发一个Office加载项,使用Azure AD的组织帐户进行身份验证。加载项需要管理员同意。因此,如果管理员已登录,则应指导他表达其管理员同意。
我们正在使用OAuth进行身份验证:
https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&client_id=<clientId>&redirect_uri=<redirectUri>
我们通过将&prompt=admin_consent
附加到该网址
问题1.我们如何测试是否已经成功给出了管理员同意,所以我们只需要管理员在他之前没有同意的情况下给予同意吗?
问题2.我们如何检查加载项的更新版本是否现在可能需要更多权限,并告知用户和管理员有关新要求的信息?
答案 0 :(得分:1)
恕我直言,自定义实现将是您的用例的更好选择
步骤可以是以下
在用户批准其管理员访问权限后,我们通常会从Azure AD中获取响应中的状态,如下所示:
获取http://localhost/myapp/permissions?tenant=a8990e1f-ff32-408a-9f8e-78d3b9139b95&state=state=12345& admin_consent = True
应用程序现在将管理员同意授予状态存储在数据库中。
如果您想详细了解相关步骤,请点击here
答案 1 :(得分:1)
是的,你可以这样做。您需要致电this MS Graph endpoint,并检查the oAuth2PermissionGrant object以查看consentType
字段设置为AllPrincipals
。
使用Microsoft Graph,您可以确定是否已授予管理员同意。授予Admin Consent后,将在应用程序上写入OAuth2.0权限授予。
在每个权限授予中,有一个字段指示授权的权限级别。对于管理员同意,您将寻找AllPrincipals
。
应用程序角色 :Directory.Read.All
&amp; Directory.ReadWrite.All
委派权限 :Diretory.Read.All
,Directory.ReadWrite.All
或Directory.AccessAsUser.All
按最低优先级排序。
这将返回oAuth2PermissionGrant object,其中包含您要查找的详细信息。
consentType
字段的响应。您可能需要枚举所有寻找值AllPrincipals
的授权。