繁体   English   中英

Azure Active Directory - 支持多租户同意应用方案

[英]Azure Active Directory - supporting multi-tenant consented app scenario

场景:我正在开发一个利用 Azure Active Directory 的多租户同意应用程序。 该应用程序可以被认为是一个闭环星型网络。 我想执行以下操作: 1. 将可以在设计时“看到”我的应用程序的租户列入白名单。 2. 启用基于证书的身份验证 - 在单个租户中,这很简单。 但是,我有点困惑它在多租户场景中的含义。 每个应用程序(即组织)都带有自己的证书。 在 S2S 场景中,客户端组织的租户节点中的节点将安装这些证书,并且客户端组织的 AAD 应用程序的 keyCredential 将配置公钥令牌。 那么如何在驻留在完全不同租户中的目标“资源”应用程序上验证此声明。? 3. 我在我的应用程序中公开了一个 oAuth2Permissions,并希望使用 PowerShell 自动化该场景。 我有一些示例代码可以单独执行以下几行:

$serviceApplication = New-AzureRmADApplication -DisplayName <AADApplicationName> -AvailableToOtherTenants $true -IdentifierUris $serviceAppIdUri `


$aad_oAuth2Perm_ReadModel = 
[Microsoft.Open.AzureAD.Model.OAuth2Permission]::New()
$aad_oAuth2Perm_ReadModel.AdminConsentDescription = ($adminConsentDisplay -f  "Model")
$aad_oAuth2Perm_ReadModel.AdminConsentDisplayName = ($adminConsentDisplay -f  "Model")
$aad_oAuth2Perm_ReadModel.Id = [guid]::NewGuid().Guid.ToString()
$aad_oAuth2Perm_ReadModel.IsEnabled = $true
$aad_oAuth2Perm_ReadModel.Type = 'User'
$aad_oAuth2Perm_ReadModel.UserConsentDescription = ($userConsentDisplay -f  "Model")
$aad_oAuth2Perm_ReadModel.UserConsentDisplayName = ($userConsentDisplay -f  "Model")
$aad_oAuth2Perm_ReadModel.Value = "Read.Model"
$aad_oAuth2Permissions.Add($aad_oAuth2Perm_ReadModel) 

Set-AzureADApplication -ObjectId $serviceApplication.ObjectId.Guid.ToString() `                    
-Oauth2Permissions $aad_oAuth2Permissions

Set-AzureADApplication 调用始终失败,并显示以下错误

Set-AzureADApplication:执行 SetApplication 时出错代码:Request_BadRequest 消息:除非先禁用属性值,否则无法删除它。

我相信我可能必须删除使用 New-AzureRmADApplication 调用创建的默认“user_impersonation”oAuth2Permission,但我尝试过的方法都不起作用。 如何删除特定的 oAuth2Permissions 或用 Set-AzureADApplication 替换它们?

这里的问题是新应用程序带有默认的 OAuth 2 权限,而您试图SET一个全新的权限而不包括旧的默认权限,这与DELETE操作相同。

一种解决方案是读取应用程序上所有现有的 OAuth 2 权限,然后在现有权限旁边添加您的新权限,然后执行SET调用。 这将避免正在进行的“删除”调用。

另一种选择是按照 API 警告你的方式去做。 有一个现有的 OAuth 2 权限,需要IsEnabled=$false才能删除。 您可以在尝试添加新权限之前,读入旧权限,禁用该权限,然后将其删除。

我相信这两种解决方案中的任何一个都可以解决您的特定错误消息。 完全清楚,我并没有真正理解你的场景,所以我不知道即使你解决了这个问题,你是否会实现你的最终目标。

如果这有帮助,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM