在 Azure 中授予管理员许可

Grant Admin Consent in Azure

我们有一个客户端应用程序,它调用 Web API,后者又调用 Microsoft Graph。 我已经阅读了有关在 Azure 门户中授予管理员同意的文档,但我仍然害怕按下该按钮,因为我不明白一些概念:

  1. 是否在应用程序 A 的页面上授予管理员同意允许应用程序 A 访问其所有必需的范围,或允许其他应用程序访问应用程序 A 范围,在“Expose API”中定义?
  2. 我是否需要对客户端应用程序和 Web 都授予管理员许可 API?或者我必须只为网络授予它 API,并使客户端应用程序预授权?
  3. “Grant Admin Consent”是否允许应用程序绕过代表流程自行调用 Microsoft Graph?例如,Web API 是否可以在不需要用户访问令牌的情况下调用 Microsoft Graph?
  4. 如果我们向 AD 添加新用户,我是否需要再次按“授予管理员同意”?
  5. “应用注册”页面和“企业应用”页面上的“授予管理员同意”是否有任何区别?
  1. 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 的权限。

  1. 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 属性),系统将提示用户同意。 这对于多层多租户应用程序很有用,但在您的场景中可能没有用。

  1. 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.

  1. If we add a new user to our AD, will I need to press "Grant Admin Consent" again?

没有。 在委派权限的情况下,管理员同意创建一个 OAuth2PermissionGrant 对象,其 principalId 为空。 这使得它适用于所有用户,当前和未来。

  1. Are there any differences between "Grant admin consent" on "App Registration" and "Enterprise applications" pages?

我从未在企业应用程序页面中使用过,所以我不能肯定。 但我猜这是同一回事。 权限始终授予服务主体(企业应用程序)而不是应用程序注册。 当您在应用程序注册中单击授予管理员同意时,它会修改您租户中其服务主体的实体。