【问题标题】:how to add permissions across active directory? (problems with setting up multi-tenant app in azure)如何跨活动目录添加权限? (在 azure 中设置多租户应用程序的问题)
【发布时间】:2017-10-03 14:04:47
【问题描述】:

现在我在 Azure 活动目录 1 中有一个应用程序,在 Azure 活动目录 2 中有一个 Web api。我的目标是让 AAD1 和 AAD2 中的用户都可以登录应用程序。

到目前为止,我已将 App 和 Api 启用为多租户,并在清单中相互添加为已知的客户端应用程序。

我还没有完成的事情:将一个作为自定义域添加到另一个中,添加权限 btw api 和 app,我在这两个上遇到了一些问题。

现在我的错误信息是:

通过授权服务器授权访问时发生错误:未授权_客户端 AADSTS65005:无效 > 资源。客户端请求访问未在客户端应用程序注册中请求的权限中列出的资源。

当我尝试在 api 中授予访问权限时,在所需的权限列表中,我没有看到 web 应用程序(位于另一个目录中)。我该怎么办?

如果我将 App 和 Api 都移动到同一个目录下,是否有允许其他目录的用户登录?

【问题讨论】:

    标签: azure oauth-2.0 azure-active-directory multi-tenant


    【解决方案1】:

    为了让您将租户 1 中的 Web API 作为“必需权限列表”的选项查看,您需要将 Web API 的服务主体配置到租户 1 中。

    您可以通过多种方式执行此操作,但最简单的方法可能是通过生成登录 URL 来简单地登录 Web API。使用租户 1 中的用户登录后,服务主体将在租户中预配,然后成为可供选择的选项。

    https://login.microsoftonline.com/common/oauth2/authorize?client_id=<appid>&response_type=code&redirect_uri=<replyurl>&resource=<resource>&prompt=consent
    

    另一种选择可能是使用 AAD PowerShell 根据您的 Web API 应用程序 ID 创建服务主体:

    New-​Azure​AD​Service​Principal

    New-AzureADServicePrincipal -AccountEnabled $true -AppId $MyApp.AppId -DisplayName $App -Tags {WindowsAzureActiveDirectoryIntegratedApp}
    

    一旦您成功地将服务主体置于您所需的权限上,您上面描述的错误消息就会消失。

    【讨论】:

    • 嗨,Shawn,我已经为我的 Api 使用了 New-​Azure​AD​Service​Principal,它显示它已成功创建,但我仍然无法在我的 Tenant1 中看到该主体。我在想问题是不是 Tenant1 和 Tenant2 使用不同的订阅?
    • 这里应该没关系。您可以通过登录方法尝试吗?您确定您使用用户帐户登录到正确的租户吗?
    【解决方案2】:

    除了 Shawn Tabrizi 的回答,您还可以将您的 API 指定为应用的已知客户端应用程序

    所以在你的应用清单中:

    "knownClientApplications": [
      "your-api-client-id"
    ]
    

    然后,如果您尝试对 App 进行身份验证,它也可以同时同意 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      相关资源
      最近更新 更多