在我的场景中,我试图自动创建我的一个AAD应用程序,以便它使用为守护程序进程设置的指令调用另一个另一个WebAPI服务(不同的AAD应用程序):
https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-daemon/
我已经能够通过PowerShell自动创建AAD应用程序和所需的访问密钥。
以下是我添加密钥创建应用程序的方法:
# Generate all the keys (secrets) for the AAD application.
$passwordCredentials = @()
foreach ($key in $activeDirectoryApplication.Keys.Key)
{
$keyKeyVaultName = $key.KeyVaultName
$keyName = $key.KeyVaultKeyName
$expiration = $key.Expiration
LogInfo "Generating key with key name '$keyName' into key vault '$keyKeyVaultName' with key expiry of '$expiration'."
$passwordCredential = GenerateActiveDirectoryApplicationKeyPasswordCredential $key
$passwordCredentials += $passwordCredential
PublishActiveDirectoryApplicationKeyToKeyVault $key $passwordCredential
}
$existingApplication = New-AzureRmADApplication -DisplayName $applicationName -HomePage $applicationHomePage -IdentifierUris @($applicationIdentifier) -PasswordCredentials $passwordCredentials
我无法弄清楚如何在上面的链接中自动执行步骤8,它授予访问WebAPI应用程序的权限:
- 为应用程序配置权限 - 在“设置”菜单中,选择“必需权限”部分,单击“添加”,然后选择“API”,并在文本框中键入“TodoListService”。然后,单击Select Permissions并选择'Access TodoListService'。
醇>
有没有人知道Azure PowerShell SDK是否可以实现这一点,还是我需要以其他方式(可能是AAD Graph API)进行此操作?
谢谢!
答案 0 :(得分:0)
要分配权限,您需要使用New-AzureRmRoleAssignment
。这将允许您在特定范围内为对象(user \ group \ application)分配权限。如果你需要内置角色,你很高兴。如果您需要创建角色,请使用New-AzureRmRoleDefinition
。
$role = Get-AzureRmRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Classic storage reader"
$role.Actions.Clear()
$role.Actions.Add("Microsoft.ClassicStorage/storageAccounts/read")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/xxxx")
New-AzureRmRoleDefinition -Role $role
读:
https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-manage-access-powershell
https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/new-azurermroleassignment?view=azurermps-4.1.0
https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/new-azurermroledefinition?view=azurermps-4.1.0