Compartilhar via


Azure AD cmdlets para trabalhar com atributos de extensão

Sobre os atributos de extensão

Os atributos de extensão oferecem uma maneira conveniente de estender seu diretório do Azure AD com novos atributos que você pode usar para armazenar os valores do atributo para os objetos em seu diretório. Você pode anexar um atributo de extensão aos seguintes tipos de objeto:

  • users
  • detalhes do locatário
  • dispositivos
  • de dimensionamento da Web

As propriedades de extensão são registradas em um objeto de Aplicativo no diretório do desenvolvedor. Depois do aplicativo ter sido consentido por um usuário ou um administrador no diretório do desenvolvedor, a propriedade é adicionada ao tipo de diretório de destino e torna-se imediatamente acessível no diretório do desenvolvedor. Para um aplicativo multilocatário, quando o aplicativo recebe o consentimento de um usuário ou um administrador em outra organização, as propriedades de extensão tornam-se imediatamente acessíveis no tipo de diretório de destino no diretório da outra organização.

Se uma organização consentir com as permissões de "somente leitura" para um aplicativo com extensões registradas, as propriedades ainda ficarão acessíveis no diretório da outra organização. Além disso, as propriedades de extensão são acessíveis por qualquer aplicativo consentido em uma organização, não apenas para o aplicativo no qual estão registradas. Outros aplicativos consentidos nessa organização poderão ler ou gravar os valores para a nova propriedade de extensão se tiverem permissões suficientes.

Se o aplicativo for removido ou o consentimento for removido no diretório da outra organização, a propriedade de extensão ficará inacessível no objeto de diretório de destino. Se a extensão for excluída pelo aplicativo, também ficará inacessível no objeto de diretório de destino. Se um aplicativo multilocatário adicionar propriedades de extensão extras após o consentimento ser concedido, essas propriedades ficarão imediatamente acessíveis no diretório da outra organização.

Observação

Se o valor de uma propriedade de extensão for definido em um objeto e essa propriedade se tornar inacessível no diretório desse objeto, a propriedade ainda será contabilizado em relação ao limite desse objeto de 100 valores de propriedade de extensão. A única maneira de não levar em consideração o valor da propriedade depois dele ter sido definido é defini-lo para nulo explicitamente. Não será possível fazer isso se a propriedade de extensão estiver inacessível.

Você pode ler mais sobre as propriedades de extensão neste artigo.

Exemplos

Nestes exemplos, usaremos um objeto do usuário e trabalharemos com as propriedades de extensão. Primeiro, encontraremos a ObjectId do usuário para que possamos consultá-la facilmente depois:

$UserId = (Get-AzureADUser -Searchstring <UPN of the user we're working with>).ObjectId 

Obter todos os valores de propriedade de um usuário

(Get-AzureADUser -ObjectId $UserId).ToJson()

Obter um usuário e mostrar todas as propriedades de extensão

Get-AzureADUser -ObjectId $UserId | Select -ExpandProperty ExtensionProperty

Esse cmdlet retorna todas as propriedades de extensão de um usuário com seus valores atuais:

Key                                                                   Value
---                                                                   -----
odata.metadata                                                        https://graph.windows.net/85b5ff1e-0402-400c-9e3c-0f9e965325d1/$metad...
odata.type                                                            Microsoft.DirectoryServices.User
thumbnailPhoto@odata.mediaContentType                                 image/Jpeg
extension_e5e29b8a85d941eab8d12162bd004528_extensionAttribute13       Test 

Recuperar o valor de uma propriedade de extensão específica para um usuário

(Get-AzureADUserExtension -ObjectId $UserId).get_item("extension_e5e29b8a85d941eab8d12162bd004528_wWWHomePage")

Recuperar todas as propriedades de extensão definidas em seu locatário

Get-AzureADApplication | Get-AzureADApplicationExtensionProperty 

Criar uma nova propriedade de extensão

As propriedades de extensão são sempre criadas para um aplicativo específico. Se você quiser adicionar propriedades genéricas ao diretório, poderá criar um aplicativo de espaço reservado:

$MyApp = (New-AzureADApplication -DisplayName "My Properties Bag" -IdentifierUris "https://dummy").ObjectId 

Observe que você precisa criar uma entidade de serviço para esse aplicativo em seu diretório também para que possa criar uma nova propriedade de extensão:

New-AzureADServicePrincipal -AppId (Get-AzureADApplication -SearchString "My Properties Bag").AppId 

Agora, podemos usar esse aplicativo para criar uma nova propriedade de extensão:

New-AzureADApplicationExtensionProperty -ObjectId $MyApp -Name "MyNewProperty" -DataType "String" -TargetObjects "User" 

Quando o cmdlet concluir com êxito, ele retornará o novo objeto do atributo de extensão:

ObjectId                             Name                                                     TargetObjects
--------                             ----                                                     -------------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty {User}

Observação

O Nome da nova propriedade é gerado a partir do formato "Extension_" + <objectID do aplicativo> de espaço reservado + "_" + <o nome da nova propriedade>. Portanto, o valor exato do nome será diferente para os diferentes aplicativos criados. Você pode atribuir uma propriedade a mais de um tipo de objeto. Em nosso exemplo, apenas usamos um TargetObject, "Usuário", mas você também poderia ter especificado "Usuário", "Grupo". Isso atribuiria o objeto aos objetos usuário e grupo.

Definindo valores para as propriedades de extensão

Com a propriedade de extensão utilizada no exemplo anterior, agora podemos atribuir um valor a ela:

Set-AzureADUserExtension -ObjectId $UserId -ExtensionName "extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty" -ExtensionValue "MyNewValue" 

Recuperando todos os atributos de extensão definidos para seu aplicativo

É possível recuperar todos os atributos de extensão definidos para seu aplicativo:

Get-AzureADApplicationExtensionProperty -ObjectId (Get-AzureADApplication -SearchString "My Properties Bag").ObjectId 

Este cmdlet retorna a lista de propriedades de extensão em seu aplicativo:

ObjectId                             Name                                                      TargetObjects
--------                             ----                                                      -------------

aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty  {User}

Excluindo as propriedades de extensão

Se você não precisar mais de uma propriedade de extensão, poderá excluí-la:

Remove-AzureADApplicationExtensionProperty -ObjectId (Get-AzureADApplication -SearchString "My Properties Bag").ObjectID -ExtensionPropertyId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 

Observação

Você não pode remover o atributo de Azure AD uma vez estendido nem excluir o Tenant Schema Extension App sem gerar uma solicitação para a equipe do PayOps. Além disso, desativar a opção de extensões de diretório do assistente de Azure AD não removerá os atributos nem permitirá que você se livre do aplicativo.