如何授予企业应用的租户范围应用权限?

时间:2021-03-03 15:47:45

标签: azure-active-directory multi-tenant msal

自 3 天以来,我一直在尝试为企业应用程序在 azure b2c 租户中授予应用程序权限的管理员同意。

应用程序在我的主租户中注册,其所有委托和应用程序类型权限都在租户范围内授予。主租户在其企业应用程序中也有一个条目,我可以在其中看到相同的权限。 list of permissions

我不知道如何在不将其发布到 MS 商店的情况下将其添加到我的副租户中。所以我只是用一个副租户帐户登录我的应用程序。 (不知道对不对?)

登录后,我在我的副租户的企业应用程序中有一个条目,但没有我需要的权限? empty list of permissions

现在我的问题是:我如何为我的副租户中的所有用户授予所需的权限?

我已经尝试过这个网址:https://login.microsoftonline.com/{tenantID}/adminconsent?client_id={clientID}&scope=/.default&redirect_uri=xxx

对于我的主租户,它按预期工作,可能是因为它具有我的副租户中缺少的应用程序注册。

当我与我的副租户一起尝试时,我收到此错误:

Acess_denied: AADSTS650054 The application XXXX asked for permissions to access a resource that has been removed or is no longer available. Contact the app vendor.

1 个答案:

答案 0 :(得分:1)

此处可能发生的情况是,您已将应用配置为请求访问至少一个在“side-tenant”中没有表示的 API(例如名为“LegacyAPI”的 API)。这就是错误消息提到“资源已被删除或不再可用”的原因。

为了使同意成功,应用请求访问的所有资源服务(即 API)必须存在于授予同意的租户中。 (服务主体对象需要存在。)

这里有两个选择:

  • 同意“side-tenant”中缺少的资源服务(例如,通过管理员同意 URL)
  • 为“side-tenant”中缺失的资源服务手动创建服务主体(例如New-AzureADServicePrincipal -AppId "{resource-app-id}"

与您的问题无关,但与管理员同意 URL 相关:

对于您要执行的操作,可以通过三种方式构建管理员同意 URL,一种使用旧版 v1 端点,另两种使用较新(推荐)v2 端点。在您的管理员同意 URL 中,您使用的是 v1 端点,但您包含了 scope 参数(仅在 v2 端点中使用)。

  • v2(推荐)
    • 对于在应用注册中配置的所有权限,撤销在租户范围内授予的任何其他权限(静态):
      https://login.microsoftonline.com/{tenant-id}/v2.0/adminconsent
           ?client_id={client-id}
           &scope=.default
           &redirect_uri={redirect-url}
      
    • 对于 Microsoft Graph 的委派权限 User.Read,不要撤消已在租户范围内授予的其他权限(动态、增量):
      https://login.microsoftonline.com/{tenant-id}/v2.0/adminconsent
           ?client_id={client-id}
           &scope=https://graph.microsoft.com/User.Read
           &redirect_uri={redirect-url}
      
  • v1(支持,不推荐)
    • 对于在应用注册中配置的所有权限,撤销在租户范围内授予的任何其他权限(静态):
      https://login.microsoftonline.com/{tenant-id}/adminconsent
           ?client_id={client-id}
           &redirect_uri={redirect-url}
      

参考:https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent