Escreva sua primeira política personalizada do Azure Ative Directory B2C - Hello World!
Em seu aplicativo, você pode usar fluxos de usuário que permitem que os usuários se inscrevam, entrem ou gerenciem seus perfis. Quando os fluxos de usuários não cobrem todas as necessidades específicas da sua empresa, 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 locatário do Azure AD B2C vinculado à sua assinatura do Azure.
Registre um aplicativo Web e habilite a concessão implícita de token de ID. Para o URI de redirecionamento, use https://jwt.ms.
Você deve ter o Visual Studio Code (VS Code) instalado no seu computador.
Nota
Este artigo faz parte da série de guias de instruções Criar e executar suas próprias políticas personalizadas no Azure Ative Directory B2C. Recomendamos que comece esta série desde o primeiro artigo.
Etapa 1 - Configurar as chaves de assinatura e criptografia
Se ainda não o fez, crie as seguintes chaves de encriptação. Para automatizar o passo a passo abaixo, visite o aplicativo de configuraçã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 arquivo, 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 seu inquilino.Os elementos XML definem o elemento de nível
TrustFrameworkPolicy
superior de um arquivo de política com sua ID de política e nome de 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 reivindicação é como uma variável. A declaração da reivindicação também mostra o tipo de dados da reivindicaçã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 de Token JWT.
CryptographicKeys
Na seção , se você usou nomes diferentes para configurar as chaves de assinatura e criptografia na etapa 1, certifique-se de usar o valor correto para oStorageReferenceId
.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>
Adicionámos um UserJourney. A jornada 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. Essa jornada 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 é o ponto de entrada para sua política. Ele especifica o UserJourney a ser executado e as declarações a serem incluídas no token que é retornado quando a política é executada.
Depois de concluir a etapa 2, o arquivo deve ser semelhante ao código a ContosoCustomPolicy.XML
seguir:
<?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
- Inicie sessão no portal do Azure.
- Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas .
- No portal do Azure, procure e selecione Azure AD B2C.
- No menu à esquerda, em Políticas, selecione Identity Experience Framework.
- Selecione Carregar política personalizada, procure selecionar e, em seguida, carregue o
ContosoCustomPolicy.XML
arquivo.
Depois de carregar o ficheiro, o Azure AD B2C adiciona o prefixo B2C_1A_
, para que os nomes sejam semelhantes aos B2C_1A_CONTOSOCUSTOMPOLICY.
Etapa 4 - Testar a política personalizada
- Em Políticas personalizadas, selecione B2C_1A_CONTOSOCUSTOMPOLICY.
- Para Selecionar aplicativo na página de visão geral da política personalizada, selecione o aplicativo Web, como webapp1 , que você registrou anteriormente. Certifique-se de que o valor Select reply URL está definido como
https://jwt.ms
. - Selecione o botão Executar agora .
Depois que a política terminar a execução, você será redirecionado para https://jwt.ms
o , e verá um token JWT decodificado. Ele é semelhante ao seguinte trecho de token JWT:
{
"typ": "JWT",
"alg": "RS256",
"kid": "pxLOMWFg...."
}.{
...
"sub": "abcd-1234-efgh-5678-ijkl-etc.",
...
"acr": "b2c_1a_contosocustompolicy",
...
"message": "Hello World!"
}.[Signature]
Observe as message
declarações e sub
, que definimos como declarações de RelyingParty
saída na seção.
Próximos passos
Neste artigo, você aprendeu e usou quatro seções incluídas em uma política personalizada do Azure AD B2C. Estas seções são adicionadas como elementos filho o TrustFrameworkPolicy
elemento raiz:
- BuildingBlocks
- ClaimsProviders
- UserJourneys
- RelyingParty
A seguir, aprenda:
Como coletar e usar entradas de usuário usando a política personalizada.
Visão geral sobre declarações de política personalizada.
Como declarar uma declaração de política personalizada.
Sobre o tipo de dados de declarações de política personalizada.
Sobre os tipos de entrada do usuário da política personalizada.