在 Azure 中授予管理员许可
Grant Admin Consent in Azure
我们有一个客户端应用程序,它调用 Web API,后者又调用 Microsoft Graph。
我已经阅读了有关在 Azure 门户中授予管理员同意的文档,但我仍然害怕按下该按钮,因为我不明白一些概念:
- 是否在应用程序 A 的页面上授予管理员同意允许应用程序 A 访问其所有必需的范围,或允许其他应用程序访问应用程序 A 范围,在“Expose API”中定义?
- 我是否需要对客户端应用程序和 Web 都授予管理员许可 API?或者我必须只为网络授予它 API,并使客户端应用程序预授权?
- “Grant Admin Consent”是否允许应用程序绕过代表流程自行调用 Microsoft Graph?例如,Web API 是否可以在不需要用户访问令牌的情况下调用 Microsoft Graph?
- 如果我们向 AD 添加新用户,我是否需要再次按“授予管理员同意”?
- “应用注册”页面和“企业应用”页面上的“授予管理员同意”是否有任何区别?
- Do Grant Admin Consent on a page of app A allows application A to access all of its required scopes, or allow OTHER applications to
access application A scopes, defined in "Expose API"?
管理员同意允许应用程序 A 在其 API 权限页面上使用所有委派和应用程序权限,没有向其他应用程序授予应用程序 A 的权限。
- Do I need to grant admin consent to both client app and web API? Or I must grant it only for web API, and make the client app
pre-authorized?
您最有可能为两者都授予它。
根据第一个答案,同意客户不会给予例如MS Graph 访问 API 应用程序。
如果客户端是 API 应用程序的“已知客户端”(添加到清单中的 knownClientApplications 属性),系统将提示用户同意。
这对于多层多租户应用程序很有用,但在您的场景中可能没有用。
- Do "Grant Admin Consent" allows an application to call Microsoft Graph on its own, bypassing on-behalf-of flow? For example, can web
API call Microsoft Graph without the need to have a user access token?
仅当您授予它应用程序权限时。
委派权限始终需要用户上下文来调用 API.
- If we add a new user to our AD, will I need to press "Grant Admin Consent" again?
没有。
在委派权限的情况下,管理员同意创建一个 OAuth2PermissionGrant 对象,其 principalId 为空。
这使得它适用于所有用户,当前和未来。
- Are there any differences between "Grant admin consent" on "App Registration" and "Enterprise applications" pages?
我从未在企业应用程序页面中使用过,所以我不能肯定。
但我猜这是同一回事。
权限始终授予服务主体(企业应用程序)而不是应用程序注册。
当您在应用程序注册中单击授予管理员同意时,它会修改您租户中其服务主体的实体。
我们有一个客户端应用程序,它调用 Web API,后者又调用 Microsoft Graph。 我已经阅读了有关在 Azure 门户中授予管理员同意的文档,但我仍然害怕按下该按钮,因为我不明白一些概念:
- 是否在应用程序 A 的页面上授予管理员同意允许应用程序 A 访问其所有必需的范围,或允许其他应用程序访问应用程序 A 范围,在“Expose API”中定义?
- 我是否需要对客户端应用程序和 Web 都授予管理员许可 API?或者我必须只为网络授予它 API,并使客户端应用程序预授权?
- “Grant Admin Consent”是否允许应用程序绕过代表流程自行调用 Microsoft Graph?例如,Web API 是否可以在不需要用户访问令牌的情况下调用 Microsoft Graph?
- 如果我们向 AD 添加新用户,我是否需要再次按“授予管理员同意”?
- “应用注册”页面和“企业应用”页面上的“授予管理员同意”是否有任何区别?
- Do Grant Admin Consent on a page of app A allows application A to access all of its required scopes, or allow OTHER applications to access application A scopes, defined in "Expose API"?
管理员同意允许应用程序 A 在其 API 权限页面上使用所有委派和应用程序权限,没有向其他应用程序授予应用程序 A 的权限。
- Do I need to grant admin consent to both client app and web API? Or I must grant it only for web API, and make the client app pre-authorized?
您最有可能为两者都授予它。 根据第一个答案,同意客户不会给予例如MS Graph 访问 API 应用程序。 如果客户端是 API 应用程序的“已知客户端”(添加到清单中的 knownClientApplications 属性),系统将提示用户同意。 这对于多层多租户应用程序很有用,但在您的场景中可能没有用。
- Do "Grant Admin Consent" allows an application to call Microsoft Graph on its own, bypassing on-behalf-of flow? For example, can web API call Microsoft Graph without the need to have a user access token?
仅当您授予它应用程序权限时。 委派权限始终需要用户上下文来调用 API.
- If we add a new user to our AD, will I need to press "Grant Admin Consent" again?
没有。 在委派权限的情况下,管理员同意创建一个 OAuth2PermissionGrant 对象,其 principalId 为空。 这使得它适用于所有用户,当前和未来。
- Are there any differences between "Grant admin consent" on "App Registration" and "Enterprise applications" pages?
我从未在企业应用程序页面中使用过,所以我不能肯定。 但我猜这是同一回事。 权限始终授予服务主体(企业应用程序)而不是应用程序注册。 当您在应用程序注册中单击授予管理员同意时,它会修改您租户中其服务主体的实体。