如何测试是否已获得管理员同意

Kur*_*ede 2 oauth multi-tenant azure-active-directory microsoft-graph-api

我们正在开发一个 Office 加载项,可使用 Azure AD 的组织帐户进行身份验证。该加载项需要管理同意。因此,如果管理员登录,应引导他表达管理同意。

我们使用 OAuth 进行身份验证:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&client_id=<clientId>&redirect_uri=<redirectUri>
Run Code Online (Sandbox Code Playgroud)

我们通过附加&prompt=admin_consent到该 URL来请求管理员同意

问题1.我们如何测试管理员是否已成功同意,因此如果管理员之前没有同意,我们只需要求管理员同意即可?

问题 2. 我们如何检查加载项的更新版本现在是否可能需要更多权限,并告知用户和管理员该新要求?

Dan*_*ian 6

太长了;博士

是的,你可以这样做。您需要调用此 MS Graph 端点,并检查oAuth2PermissionGrant 对象consentType设置为 的字段AllPrincipals

一些背景

使用Microsoft Graph,您可以确定是否已授予管理员同意。授予管理员同意后,应用程序上会写入 OAuth2.0 权限授予。

在每个权限授予中,都有一个字段指示授予的权限级别。对于管理员同意,您需要寻找AllPrincipals.

详细步骤

  1. 连接您的应用程序以调用 Microsoft Graph。确保它正在请求调用所需端点所需的所有权限。这在委派(代表最终用户)或应用程序角色的情况下有所不同。

应用程序角色Directory.Read.All&Directory.ReadWrite.All

委派权限Diretory.Read.AllDirectory.ReadWrite.All、 或Directory.AccessAsUser.All按从最低权限到最高权限的顺序。

  1. 调用MS Graph 的GET /oAuth2PermissionGrant 端点。

这将返回一个oAuth2PermissionGrant 对象,其中包含您正在查找的详细信息。

  1. 检查该consentType字段的响应。您可能需要枚举所有查找值的补助金AllPrincipals