【问题标题】:Can a service principal (Azure Application multi-tenant) grant admin consent to application in tenant using AZ CLI?服务主体(Azure 应用程序多租户)能否使用 AZ CLI 向租户中的应用程序授予管理员许可?
【发布时间】:2020-02-24 16:41:09
【问题描述】:

上下文

我们在 Azure 上使用多个目录(TENANT_ATENANT_B)。目标是在 TENANT_A 内创建一个服务主体(应用程序)_SP_APP,授予对 TENANT_B 的访问权限。我们想在脚本中使用这个服务主体来轻松管理这两个目录。 其中一个脚本是在 TENANT_B 内进行新的应用程序注册,并为这些应用程序授予 ADMIN CONSENT

做了什么

_SP_APP

  • 两个目录的全局管理员
  • 授予对 TENANT_B 的访问权限(在企业应用程序中可见)
  • Api 权限已获得管理员同意(TENANT_ATENANT_B
    • Microsoft Graph(委托和应用程序完全访问)
    • Azure Active Directory Graph(委托和应用程序完全访问)

步骤

正常工作

# Login with service principal of multiple tenants application
az login --service-principal -u _SP_APP -p <PASSWORD> --tenant TENANT_B
# Creating application and fetching ID
_OBJECT_ID=`az ad app create ...` 

不工作

# Granting Admin Consent
az ad app permission admin-consent --id $_OBJECT_ID
# ERROR
Bad Request({"ClassName":"Microsoft.Portal.Framework.Exceptions.ClientException","Message":"AADSTS50058: A silent sign-in request was sent but no user is signed in.\r\nTrace ID: 9c9bd004-a97a-4543-8ff0-e314de77a700\r\nCorrelation ID: 44c79409-2f3e-43de-a84b-1e5a42e382e7\r\nTimestamp: 2019-10-28 15:54:20Z" ...

奇怪的是,当我们用全局管理员用户az login 并执行脚本时,它工作正常。

问题

我们是否遗漏了一些东西以允许该服务主体能够授予管理员同意,或者它是只有“用户”才能做的事情? (我在 microsoft azure 文档中没有找到任何响应)。

谢谢

【问题讨论】:

    标签: azure azure-active-directory azure-cli


    【解决方案1】:

    我已与 Azure 支持工程师确认。我们不能使用服务主体来授予管理员同意。

    如果您必须使用服务主体来执行此操作,您可以使用 Microsoft Graph api。它会自动同意权限。

    POST https://graph.microsoft.com/beta/xx.onmicrosoft.com/oauth2PermissionGrants
    
    {
      "clientId": "clientId-value",
      "consentType": "consentType-value",
      "expiryTime": "2016-10-19T10:37:00Z",
      "id": "id-value",
      "principalId": "principalId-value",
      "resourceId": "resourceId-value"
    }
    

    调用该接口需要提供访问令牌,详情请参考this document

    【讨论】:

    • 谢谢@tony-ju,我们刚试过这个。它并没有完全回应我们的案例。该端点似乎只授予对不需要“管理员同意”的“委托”权限​​的访问权限。对于那些想要授予对此类权限的同意的人,一些精度:clientId = 要授予访问权限的应用程序的服务主体的 ObjectId。 resourceId = 资源应用的服务主体Id(Microsoft Graph,Windows Azure Active Directory),点击详情中服务主体的权限即可看到
    • 似乎需要一个范围字段,如果我们没有放一个会有一些错误。文档是 there 谁想要的。
    • 目前,我们仍在为我们的特定案例寻找解决方案,但我们会接受它,因为它可以响应大多数案例。谢谢。如果我们找到方法,我们将更新解决方案。
    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多