Definir um perfil técnico do Microsoft Entra em uma política personalizada do Azure Active Directory B2C
Observação
No Azure Active Directory B2C, as políticas personalizadas são projetadas principalmente para tratar de cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuários predefinidos. Se você ainda não fez isso, saiba mais sobre o pacote de início de política personalizado em Introdução às políticas personalizadas no Active Directory B2C.
O Azure AD (Active Directory) B2C dá suporte ao gerenciamento de usuários do Microsoft Entra. Este artigo descreve as especificações de um perfil técnico para interagir com um provedor de declarações compatível com esse protocolo padronizado.
Protocolo
O atributo Name do elemento Protocol precisa ser definido como Proprietary
. O atributo manipulador deve conter o nome totalmente qualificado do assembly do manipulador de protocolo Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
.
Os perfis técnicos do Microsoft Entra a seguir relativos ao pacote inicial de políticas personalizadas incluem o perfil técnico AAD-Common. Os perfis técnicos do Microsoft Entra não especificam o protocolo porque ele está configurado no perfil técnico AAD-Common:
- AAD-UserReadUsingAlternativeSecurityId e UserReadUsingAlternativeSecurityId-AAD-NoError – procure uma conta social no diretório.
- AAD-UserWriteUsingAlternativeSecurityId – crie uma nova conta social.
- AAD-UserReadUsingEmailAddress – procure uma conta local no diretório.
- AAD-UserWriteUsingLogonEmail – criar uma nova conta local.
- AAD-UserWritePasswordUsingObjectId – atualize uma senha de uma conta local.
- AAD-UserWriteProfileUsingObjectId – atualize um perfil do usuário de uma conta local ou social.
- AAD-UserReadUsingObjectId – leia um perfil do usuário de uma conta local ou social.
- AAD-UserWritePhoneNumberUsingObjectId – grave o número de telefone MFA de uma conta local ou social
O exemplo a seguir mostra o perfil técnico AAD-Common:
<TechnicalProfile Id="AAD-Common">
<DisplayName>Azure Active Directory</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
</CryptographicKeys>
<!-- We need this here to suppress the SelfAsserted provider from invoking SSO on validation profiles. -->
<IncludeInSso>false</IncludeInSso>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
InputClaims
O elemento InputClaims contém uma declaração que é usada para pesquisar uma conta no diretório ou criar uma. Deve haver exatamente um elemento InputClaim na coleção de declarações de entrada para todos os perfis técnicos do Microsoft Entra. Talvez seja necessário mapear o nome da declaração definido na política para o nome definido no Microsoft Entra ID.
A declaração de entrada é uma chave que identifica exclusivamente as contas de usuário existentes no diretório do Microsoft Entra quando você deseja ler, atualizar ou excluir uma delas. Por exemplo, objectId, userPrincipalName, signInNames.emailAddress, signInNames.userName ou alternativeSecurityId.
Para criar uma conta de usuário, a declaração de entrada é uma chave que identifica exclusivamente uma conta local ou federada. Por exemplo, conta local: signInNames.emailAddress ou signInNames.userName. No caso da conta federada: alternativeSecurityId.
O elemento InputClaimsTransformations pode conter uma coleção de elementos de transformação de declarações de entrada que são usados para modificar essa declaração ou gerar uma nova.
OutputClaims
O elemento OutputClaims contém uma lista de declarações retornadas pelo perfil técnico do Microsoft Entra. Talvez seja necessário mapear o nome da declaração definido na política para o nome definido no Microsoft Entra ID. Ao definir o atributo DefaultValue
, também é possível incluir declarações que não são retornadas pelo Microsoft Entra ID.
O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation usados para modificar as declarações de saída ou gerar novas declarações.
Por exemplo, o perfil técnico de AAD-UserWriteUsingLogonEmail cria uma conta local e retorna as seguintes declarações:
- objectId, que é o identificador da nova conta
- newUser, que indica se o usuário é novo
- authenticationSource, que define a autenticação como
localAccountAuthentication
- userPrincipalName, que é o nome UPN da nova conta
- signInNames.emailAddress, que é o nome de entrada na conta, semelhante à declaração de entrada de email
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>
PersistedClaims
O elemento PersistedClaims contém todos os valores que devem ser persistidos pelo Microsoft Entra ID com possíveis informações de mapeamento entre um tipo de declaração já definido na seção ClaimsSchema da política e o nome do atributo do Microsoft Entra.
O perfil técnico do AAD-UserWriteUsingLogonEmail, que cria a nova conta local, mantém as declarações a seguir:
<PersistedClaims>
<!-- Required claims -->
<PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
<PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
<PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
<PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />
<!-- Optional claims. -->
<PersistedClaim ClaimTypeReferenceId="givenName" />
<PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>
O nome da declaração será o nome do atributo do Microsoft Entra, a menos que o atributo PartnerClaimType, que contém o nome do atributo do Microsoft Entra, seja especificado.
Requisitos de uma operação
- Deve haver exatamente um elemento InputClaim no pacote de declarações para todos os perfis técnicos do Microsoft Entra.
- O artigo sobre atributos de perfil de usuário descreve os atributos de perfil de usuário do Azure AD B2C com suporte que você pode usar nas declarações de entrada, de saída e persistentes.
- Se a operação for
Write
ouDeleteClaims
, ela também deverá aparecer em um elemento PersistedClaims. - O valor da declaração userPrincipalName deve estar no formato de
user@tenant.onmicrosoft.com
. - A declaração displayName é necessária e não pode ser uma cadeia de caracteres vazia.
Operações de perfil técnico do Microsoft Entra
Leitura
A operação Ler os dados sobre uma conta de usuário único. O perfil técnico a seguir lê os dados sobre uma conta de usuário usando o objectId do usuário:
<TechnicalProfile Id="AAD-UserReadUsingObjectId">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectId" Required="true" />
</InputClaims>
<OutputClaims>
<!-- Required claims -->
<OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />
<!-- Optional claims -->
<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
Gravar
A operação Gravar cria ou atualiza uma conta de usuário único. O seguinte perfil técnico cria uma nova conta social:
<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
<Metadata>
<Item Key="Operation">Write</Item>
<Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
<Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
</InputClaims>
<PersistedClaims>
<!-- Required claims -->
<PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
<PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
<PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
<PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
<!-- Optional claims -->
<PersistedClaim ClaimTypeReferenceId="otherMails" />
<PersistedClaim ClaimTypeReferenceId="givenName" />
<PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
DeleteClaims
A operação DeleteClaims limpa as informações de uma lista de declarações fornecida. O perfil técnico a seguir exclui declarações:
<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
<Metadata>
<Item Key="Operation">DeleteClaims</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectId" Required="true" />
</InputClaims>
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="objectId" />
<PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber" />
</PersistedClaims>
<OutputClaims />
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
DeleteClaimsPrincipal
A operação DeleteClaimsPrincipal exclui uma única conta de usuário do diretório. O perfil técnico a seguir exclui uma conta de usuário do diretório usando o nome UPN:
<TechnicalProfile Id="AAD-DeleteUserUsingObjectId">
<Metadata>
<Item Key="Operation">DeleteClaimsPrincipal</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectId" Required="true" />
</InputClaims>
<OutputClaims/>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
O perfil técnico a seguir exclui uma conta de usuário social usando alternativeSecurityId:
<TechnicalProfile Id="AAD-DeleteUserUsingAlternativeSecurityId">
<Metadata>
<Item Key="Operation">DeleteClaimsPrincipal</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="alternativeSecurityId" Required="true" />
</InputClaims>
<OutputClaims/>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
Metadados
Atributo | Obrigatório | Descrição |
---|---|---|
Operação | Sim | A operação a ser executada. Valores possíveis: Read , Write , DeleteClaims ou DeleteClaimsPrincipal . |
RaiseErrorIfClaimsPrincipalDoesNotExist | Não | Gere um erro se o objeto de usuário não existe no diretório. Valores possíveis: true ou false . |
RaiseErrorIfClaimsPrincipalAlreadyExists | Não | Gere um erro se o objeto de usuário já existe. Valores possíveis: true ou false . Esses metadados são aplicáveis somente para a operação de gravação. |
ApplicationObjectId | Não | O identificador de objeto de aplicativo para atributos de extensão. Valor: ObjectId de um aplicativo. Para obter mais informações, confira Usar atributos personalizados. |
ClientId | Não | O identificador de cliente para acessar o locatário como um terceiro. Para obter mais informações, veja Atributos personalizados de uso em uma política de edição de perfil personalizada |
IncludeClaimResolvingInClaimsHandling | Não | Em declarações de entrada e saída, especifica se a resolução de declarações está incluída no perfil técnico. Valores possíveis: true ou false (padrão). Para usar um resolvedor de declarações no perfil técnico, defina-o como true . |
Elementos da interface do usuário
As configurações a seguir podem ser usadas para configurar a mensagem de erro exibida após a falha. Os metadados devem ser configurados no perfil técnico autodeclarado. A mensagem de erro pode ser localizada.
Atributo | Obrigatório | Descrição |
---|---|---|
UserMessageIfClaimsPrincipalAlreadyExists | Não | Se um erro for gerado (veja a descrição do atributo RaiseErrorIfClaimsPrincipalAlreadyExists), especifique a mensagem a mostrar ao usuário se o objeto de usuário já existe. |
UserMessageIfClaimsPrincipalDoesNotExist | Não | Caso um erro deva ser gerado (veja a descrição do atributo RaiseErrorIfClaimsPrincipalDoesNotExist), especifique a mensagem para mostrar ao usuário se o objeto de usuário não existe. |
Próximas etapas
Confira o seguinte artigo, por exemplo, para saber como usar o perfil técnico do Microsoft Entra: