azure - 如何使用azure服务主体进行 Multi-Tenancy 应用程序?

标签 azure azure-active-directory cloud openid multi-tenant

我有一个非常典型的情况,我有Azure租户A(我们自己的)和完全不同的租户B,属于我们的合作伙伴(有自己的Azure AD设置)。该用例基本上是使用 A 的服务主体并从我的应用程序中读取租户 B 的特定资源。

实现此目的的一种技术方法基本上是使用租户 A 的 appId 并在租户 B 上创建 SP。类似这样

az ad sp create --id 00000000-0000-0000-0000-000000000000

但是问题是我们有多个合作伙伴,如果一个合作伙伴可以在我的应用程序中使用其他合作伙伴的tenantId,那么他们实际上可以读取其他租户的详细信息。

我发现有多种方法可以处理这个问题,通过 multi tenant authentication 。但问题是,身份验证流程是否可以跨不同租户进行? 其他是,我是否可以为每个租户使用带有客户端证书的服务主体?

有人对如何实现这一目标有任何合适的建议吗?

最佳答案

要将 Azure 服务主体用于 Multi-Tenancy 应用程序,请尝试以下操作:

创建 Azure AD 应用程序时,AvailableToOtherTenants $true:

$aadApplication = New-AzureADApplication -DisplayName Name
-HomePage URL
-ReplyUrls URL
-IdentifierUris AppIdURI
-LogoutUrl logoutURI
-RequiredResourceAccess RequiredResourcesAccess
-PasswordCredentials AppKey
-AvailableToOtherTenants $true
$servicePrincipal = New-AzureADServicePrincipal -AppId $aadApplication.AppId

enter image description here

然后将所需权限分配给 Azure AD 应用程序。

要在另一个租户中创建服务主体,您可以使用以下端点授予管理员同意:

https://login.microsoftonline.com/TenantIdofAnotherTenant/adminconsent?client_id=ClientID

使用其他租户管理员凭据登录并接受,这将在另一个租户中创建服务主体。

enter image description here

欲了解更多详情,请引用以下链接:

Convert single-tenant app to multi-tenant on Azure AD

How to create a multi-tenant Service Principal in Azure by Allen Wu

关于azure - 如何使用azure服务主体进行 Multi-Tenancy 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73958492/

相关文章:

wpf - 启用侧面加载后,为什么 MSIX 不会在每次应用程序运行时自动检查更新?

登录后使用 Azure AD B2C Graph API?

cloud - 谷歌计算引擎: Use snapshot from another project?

Windows Azure Toolkit for Java 插件无法在 Mac 上运行

Azure 事件中心 REST API : Why specify the publisher in the URL when sending events?

Azure CDN(标准 Microsoft)- 服务器的 IP 地址

email - 用于 Exchange/O365 POP3 和 SMTP 的双足客户端凭据 OAuth 流程

angular - adal angular 应用程序重新加载 - 按设计?

amazon-web-services - 在 AWS 上转发客户端的 IP 地址

c# - 使用 Azure Redis 缓存重试策略