Olá Pessoal,
Hoje veremos como rapidamente criar um App registration com Application Roles no Azure AD usando Powershell. Recentemente precisei realizar esse processo varias vezes, então logo na segunda vez decidi fazer um script que criasse um App Registration no Azure AD com uma lista de Application Roles.
Para realizar esse processo, é necessário criar uma lista genérica de App Roles. A lista genérica pode ser criada utilizando o tipo System.Collections.Generic.List`1
e passando o tipo Microsoft.Open.AzureAD.Model.AppRole
para limitar o tipo de objeto que pode ser armazenado na lista. Logo após declarar a lista criei uma string em formato CSV com a lista de roles que eu queria criar e para cada objeto do CSV criei um novo Microsoft.Open.AzureAD.Model.AppRole
definindo os valores de DisplayName, Description e Nome(declarado como Value), em seguida podemos adicionar a role a lista de roles declarada anteriormente.
Finalizado esse processo utilizamos o comando New-AzureADApplication
para criar a App Registration efetivamente, e para finalizar definimos o IdentifierUri do App criado para que o SPN seja registrado e que as roles fiquem visíveis no diretório para delegação do acesso.
Script Final:
#Requires -Modules AzureAD
Param(
[Parameter(Mandatory=$true, HelpMessage="Insert the DisplayName of the Service App you wish to create")]
[String]$ApplicationName
)
Connect-AzureAD
if(-not(Get-AzureADApplication -Filter "DisplayName eq '$($appApplicationNameName)'" -ErrorAction SilentlyContinue))
{
$AppRoles = [System.Collections.Generic.List`1[Microsoft.Open.AzureAD.Model.AppRole]]::new()
@(ConvertFrom-Csv -InputObject @"
"value","displayName","description"
"WebAPIHostService","Web API Host Service","Allow client apps to send requests to the Web API Host Service API."
"CustomService","Session Lookup Service","Allow client apps to send requests to the custom Service API."
"@).ForEach({
# Create new AppRole object
$newAppRole = [Microsoft.Open.AzureAD.Model.AppRole]::new()
$newAppRole.DisplayName = $PSItem.DisplayName
$newAppRole.Description = $PSItem.Description
$newAppRole.Value = $PSItem.Value
$newAppRole.Id = [Guid]::NewGuid().ToString()
$newAppRole.IsEnabled = $true
$newAppRole.AllowedMemberTypes = @('Application')
$appRoles += $newAppRole
})
$Application = New-AzureADApplication -DisplayName $ApplicationName -AppRoles $AppRoles
Set-AzureADApplication -ObjectId $Application.ObjectId -IdentifierUris "api://$($Application.AppId)" -Verbose
}
Dúvidas? Sugestões? Comente!
Até a proxima!