首页 > 解决方案 > 当我尝试使用多个 allowedMemberTypes 创建应用角色时,它会引发错误

问题描述

我正在尝试创建一个应用角色,其中我将拥有两个 allowedMemberTypes:ApplicationUsers。但它会引发错误:为资源“AppRole”的属性“allowedMemberTypes”指定的值无效。

以下是 cmdlet:

  $contributorRole = new-object Microsoft.Open.AzureAD.Model.AppRole -Property @{
    IsEnabled = $true;
    Description = "Read/write access";
    DisplayName = "Contributor";
    AllowedMemberTypes = @("User", "Application");
    Id = [guid]::NewGuid().ToString();
    Value = "bcc.contributor";
  };

$myApp = New-AzureADApplication -Oauth2AllowImplicitFlow $true -Oauth2RequirePostResponse $true -DisplayName $displayName -AppRoles $contributorRole

这是 cmdlet 的结果

结果

如果您从$contributorRole中删除应用程序,它将起作用。

标签: powershellazure-active-directory

解决方案


我尝试使用您的代码测试几个场景,并且能够执行您尝试执行的操作。

方案 1:创建具有 App 角色的新 Azure AD 应用程序

Connect-AzureAD 
$displayname = "Test1" 
$contributorRole = new-object Microsoft.Open.AzureAD.Model.AppRole -Property @{ 
    IsEnabled = $true; 
    Description = "Read/write access"; 
    DisplayName = "Contributor"; 
    AllowedMemberTypes = @("User", "Application"); 
    Id = [guid]::NewGuid().ToString(); 
    Value = "bcc.contributor"; 
  }; 
$myApp = New-AzureADApplication -Oauth2AllowImplicitFlow $true -Oauth2RequirePostResponse $true -DisplayName $displayName -AppRoles

在此处输入图像描述

方案 2:在现有 Azure AD 应用程序上创建应用角色(通过 Portal 创建的 AD 应用程序)

Connect-AzureAD
$contributorRole = new-object Microsoft.Open.AzureAD.Model.AppRole -Property @{
    IsEnabled = $true;
    Description = "Read/write access";
    DisplayName = "Contributor";
    AllowedMemberTypes = @("User", "Application");
    Id = [guid]::NewGuid().ToString();
    Value = "bcc.contributor";
  };

$myApp = Get-AzureADApplication -Filter "DisplayName eq 'Test2'"
$change = Set-AzureADApplication -ObjectID $myApp.ObjectId -AppRoles $contributorRole 

在此处输入图像描述

注意:使用订阅级别帐户失败会建议您使用 azure AD 的管理员帐户登录,即 admin@domainname.onmicrosoft.com


推荐阅读