Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.
Em seu aplicativo, você pode usar fluxos de usuário que permitem que os usuários se inscrevam, entrem ou gerenciem seu perfil. Quando os fluxos de usuário não abrangem todas as suas necessidades específicas de negócios, você pode usar políticas personalizadas.
Embora você possa usar o pacote inicial de políticas personalizadas pré-criado para escrever políticas personalizadas, é importante entender como uma política personalizada é criada. Neste artigo, você aprenderá a criar sua primeira política personalizada do zero.
Pré-requisitos
Se você ainda não tiver um, crie um tenant do Azure AD B2C vinculado à sua assinatura do Azure.
Você deve ter o VS Code (Visual Studio Code) instalado em seu computador.
Observação
Este artigo faz parte da série de guias de instruções Criar e executar suas próprias políticas personalizadas no Azure Active Directory B2C. Recomendamos que você inicie esta série a partir do primeiro artigo.
Etapa 1 – Configurar as chaves de assinatura e criptografia
Se você ainda não fez isso, crie as seguintes chaves de criptografia. Para automatizar o passo a passo abaixo, visite o Aplicativo de Instalação do IEF e siga as instruções:
Use as etapas em Adicionar chaves de assinatura e criptografia para aplicativos do Identity Experience Framework para criar a chave de assinatura.
Use as etapas em Adicionar chaves de assinatura e criptografia para aplicativos do Identity Experience Framework para criar a chave de criptografia.
Etapa 2 – Criar o arquivo de política personalizado
No VS Code, crie e abra o arquivo
ContosoCustomPolicy.XML
.ContosoCustomPolicy.XML
No ficheiro, adicione o seguinte código:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="yourtenant.onmicrosoft.com" PolicyId="B2C_1A_ContosoCustomPolicy" PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_ContosoCustomPolicy"> <BuildingBlocks> <!-- Building Blocks Here--> </BuildingBlocks> <ClaimsProviders> <!-- Claims Providers Here--> </ClaimsProviders> <UserJourneys> <!-- User Journeys Here--> </UserJourneys> <RelyingParty> <!-- Relying Party Here that's your policy’s entry point Specify the User Journey to execute Specify the claims to include in the token that is returned when the policy runs --> </RelyingParty> </TrustFrameworkPolicy>
Substitua
yourtenant
pela parte do subdomínio do nome do locatário, comocontoso
. Saiba como obter o nome do locatário.Os elementos XML definem o elemento de nível
TrustFrameworkPolicy
superior de um arquivo de política com sua ID de política e o nome do locatário. O elemento TrustFrameworkPolicy contém outros elementos XML que você usará nesta série.Para declarar uma declaração, adicione o seguinte código na
BuildingBlocks
seção doContosoCustomPolicy.XML
arquivo:<ClaimsSchema> <ClaimType Id="objectId"> <DisplayName>unique object Id for subject of the claims being returned</DisplayName> <DataType>string</DataType> </ClaimType> <ClaimType Id="message"> <DisplayName>Will hold Hello World message</DisplayName> <DataType>string</DataType> </ClaimType> </ClaimsSchema>
Uma declaração é como uma variável. A declaração da declaração também mostra o tipo de dados da declaração.
ClaimsProviders
Na seção doContosoCustomPolicy.XML
arquivo, adicione o seguinte código:<ClaimsProvider> <DisplayName>Token Issuer</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="JwtIssuer"> <DisplayName>JWT Issuer</DisplayName> <Protocol Name="None" /> <OutputTokenFormat>JWT</OutputTokenFormat> <Metadata> <Item Key="client_id">{service:te}</Item> <Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item> <Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item> </Metadata> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> <Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer" /> </CryptographicKeys> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <ClaimsProvider> <!-- The technical profile(s) defined in this section is required by the framework to be included in all custom policies. --> <DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="TpEngine_c3bd4fe2-1775-4013-b91d-35f16d377d13"> <DisplayName>Trustframework Policy Engine Default Technical Profile</DisplayName> <Protocol Name="None" /> <Metadata> <Item Key="url">{service:te}</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Declaramos um emissor JWT. Na seção
CryptographicKeys
, se você usou nomes diferentes para configurar as chaves de assinatura e criptografia na etapa 1, certifique-se de que está usando o valor correto paraStorageReferenceId
.UserJourneys
Na seção doContosoCustomPolicy.XML
arquivo, adicione o seguinte código:<UserJourney Id="HelloWorldJourney"> <OrchestrationSteps> <OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" /> </OrchestrationSteps> </UserJourney>
Adicionamos um UserJourney. O percurso do usuário especifica a lógica de negócios pela qual o usuário final passa enquanto o Azure AD B2C processa uma solicitação. Esse percurso do usuário tem apenas uma etapa que emite um token JTW com as declarações que você definirá na próxima etapa.
RelyingParty
Na seção doContosoCustomPolicy.XML
arquivo, adicione o seguinte código:<DefaultUserJourney ReferenceId="HelloWorldJourney"/> <TechnicalProfile Id="HelloWorldPolicyProfile"> <DisplayName>Hello World Policy Profile</DisplayName> <Protocol Name="OpenIdConnect" /> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="abcd-1234-efgh-5678-ijkl-etc."/> <OutputClaim ClaimTypeReferenceId="message" DefaultValue="Hello World!"/> </OutputClaims> <SubjectNamingInfo ClaimType="sub" /> </TechnicalProfile>
A seção RelyingParty serve como ponto de entrada para sua política. Ela especifica o UserJourney a ser executado e as declarações a serem incluídas no token retornado quando a política for executada.
Depois de concluir a etapa 2, o ContosoCustomPolicy.XML
arquivo deverá ser semelhante ao seguinte código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="Contosob2c2233.onmicrosoft.com" PolicyId="B2C_1A_ContosoCustomPolicy" PublicPolicyUri="http://Contosob2c2233.onmicrosoft.com/B2C_1A_ContosoCustomPolicy">
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="objectId">
<DisplayName>unique object Id for subject of the claims being returned</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="message">
<DisplayName>Will hold Hello World message</DisplayName>
<DataType>string</DataType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>
<ClaimsProviders><!--Claims Providers Here-->
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="JwtIssuer">
<DisplayName>JWT Issuer</DisplayName>
<Protocol Name="None"/>
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
<Item Key="client_id">{service:te}</Item>
<Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
<Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer"/>
<Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer"/>
</CryptographicKeys>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<ClaimsProvider>
<DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="TpEngine_c3bd4fe2-1775-4013-b91d-35f16d377d13">
<DisplayName>Trustframework Policy Engine Default Technical Profile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="url">{service:te}</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>
<UserJourneys>
<UserJourney Id="HelloWorldJourney">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
<RelyingParty><!--
Relying Party Here that's your policy’s entry point
Specify the User Journey to execute
Specify the claims to include in the token that is returned when the policy runs
-->
<DefaultUserJourney ReferenceId="HelloWorldJourney"/>
<TechnicalProfile Id="HelloWorldPolicyProfile">
<DisplayName>Hello World Policy Profile</DisplayName>
<Protocol Name="OpenIdConnect"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="abcd-1234-efgh-5678-ijkl-etc."/>
<OutputClaim ClaimTypeReferenceId="message" DefaultValue="Hello World!"/>
</OutputClaims>
<SubjectNamingInfo ClaimType="sub"/>
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
Etapa 3 – Carregar arquivo de política personalizado
- Entre no portal do Azure.
- Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
- No portal do Azure, pesquise e selecione Azure AD B2C.
- No menu à esquerda, em Políticas, selecione Identity Experience Framework.
- Escolha Carregar política personalizada, procure Selecionar e carregue o arquivo
ContosoCustomPolicy.XML
.
Depois de carregar o arquivo, o Azure AD B2C adiciona o prefixo B2C_1A_
, de modo que os nomes são semelhantes a B2C_1A_CONTOSOCUSTOMPOLICY.
Etapa 4 – Testar a política personalizada
- Em Políticas personalizadas, selecione B2C_1A_CONTOSOCUSTOMPOLICY.
- Para selecionar o aplicativo na página de visão geral da política personalizada, selecione o aplicativo Web, como o webapp1 que você registrou anteriormente. Certifique-se de que o valor Selecionar URL de resposta esteja definido
https://jwt.ms
corretamente. - Selecione o botão Executar agora .
Depois que a política concluir a execução, você será redirecionado para https://jwt.ms
e verá um JWT decodificado. Parece semelhante ao seguinte trecho JWT:
{
"typ": "JWT",
"alg": "RS256",
"kid": "pxLOMWFg...."
}.{
...
"sub": "abcd-1234-efgh-5678-ijkl-etc.",
...
"acr": "b2c_1a_contosocustompolicy",
...
"message": "Hello World!"
}.[Signature]
Observe as declarações message
e sub
, que definimos como declarações de saída na seção RelyingParty
.
Conteúdo relacionado
Neste artigo, você aprendeu e usou quatro seções incluídas em uma política personalizada do Azure AD B2C. Essas seções são adicionadas como elementos filho ao TrustFrameworkPolicy
elemento raiz:
- BuildingBlocks
- ClaimsProviders
- UserJourneys
- Contando com o Partido
Em seguida, saiba:
Como coletar e usar entradas de usuário usando a política personalizada.
Sobre a visão geral das declarações de uma política personalizada.
Sobre o tipo de dados de declarações de uma política personalizada.
Sobre os tipos de entrada de usuário de uma política personalizada.