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.
Antes de começar, use o seletor Escolher um tipo de política na parte superior desta página para escolher o tipo de política que você está configurando. O Azure Active Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos dos usuários predefinidos ou de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.
Neste artigo, você coleta um novo atributo, como cidade, durante sua jornada de inscrição no Azure AD B2C (Azure Active Directory B2C). Você obtém a cidade dos usuários, configura isso como uma lista suspensa e define se o fornecimento dessa informação é obrigatório.
Importante
Esse exemplo usa a reivindicação interna “cidade”. Em vez disso, você pode escolher um dos atributos internos do Azure AD B2C com suporte ou um atributo personalizado. Para usar um atributo personalizado, habilite atributos personalizados. Para usar um atributo interno ou personalizado diferente, substitua 'city' pelo atributo de sua escolha, por exemplo, o atributo interno jobTitle ou um atributo personalizado como extension_loyaltyId.
Pré-requisitos
- Criar um fluxo do usuário para que os usuários podem se registrar e entrar no seu aplicativo.
- Registrar um aplicativo da web.
- Conclua as etapas em Comece a usar políticas personalizadas no Active Directory B2C. Esse tutorial mostra como atualizar arquivos de política personalizados para usar sua configuração de locatário do Azure AD B2C.
- Registrar um aplicativo da web.
Adicionar atributos de usuário ao fluxo do usuário
- 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 seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
- Em Serviços do Azure, selecione Azure AD B2C. Ou use a caixa de pesquisa para localizar e selecionar Azure AD B2C.
- No locatário do Azure AD B2C, selecione Fluxos dos usuários.
- Selecione sua política (por exemplo, "B2C_1_SignupSignin") para abri-la.
- Selecione atributos de usuário e, em seguida, selecione o atributo de usuário (por exemplo, "Cidade").
- Clique em Salvar.
Fornecer declarações opcionais ao seu aplicativo
As declarações de aplicativo são valores que são retornados para o aplicativo. Atualize o fluxo do usuário para conter as declarações desejadas:
- Selecione sua política (por exemplo, "B2C_1_SignupSignin") para abri-la.
- Selecione Declarações do aplicativo.
- Selecione os atributos que você deseja enviar de volta para seu aplicativo (por exemplo, "Cidade").
- Clique em Salvar.
Configurar o tipo de entrada de atributos de usuário
Selecione sua política (por exemplo, "B2C_1_SignupSignin") para abri-la.
Selecione layouts de página.
Selecione a página de inscrição da conta local.
Em atributos de usuário, selecione Cidade.
- Na lista suspensa Opcional, selecione Não.
- No tipo de entrada usuário, selecione o tipo de entrada do usuário atual, como TextBox, para abrir um painel de janela do editor de tipo de entrada do usuário .
- No menu suspenso Tipo de entrada do usuário, selecione DropdownSingleSelect.
- No Texto e valores, insira os pares de texto e valor que compõem o conjunto de respostas para o atributo. O Texto é exibido na interface da web para seu fluxo, e os Valores são armazenados no Azure AD B2C para o Texto selecionado. Opcional: use os botões "Mover para cima/baixo" para reordenar os itens suspensos.
Selecione OK. Opcional: use os botões "Mover para cima/para baixo" para reordenar atributos de usuário na página de inscrição.
Clique em Salvar.
Forneça uma lista de valores usando coleções localizadas
Para fornecer uma lista definida de valores para o atributo da cidade:
- Habilitar a personalização de idioma no fluxo do usuário
- Selecione sua política (por exemplo, "B2C_1_SignupSignin") para abri-la.
- Na página Idiomas do fluxo do usuário, selecione o idioma que você deseja personalizar.
- Em Arquivos de recursos de nível de página, selecione Página de inscrição de conta local.
- Selecione Baixar padrões (ou Baixar substituições se você editou esse idioma anteriormente).
- Crie um
LocalizedCollectionsatributo.
O LocalizedCollections é uma matriz de pares Name e Value. A ordem para os itens é a ordem em que eles são exibidos.
-
ElementIdé o atributo do usuário ao qual esse atributoLocalizedCollectionsé uma resposta. -
Nameé o valor mostrado para o usuário. -
Valueé o que é retornado na declaração quando essa opção é selecionada.
{
"LocalizedStrings": [...],
"LocalizedCollections": [
{
"ElementType": "ClaimType",
"ElementId": "city",
"TargetCollection": "Restriction",
"Override": true,
"Items": [
{
"Name": "Berlin",
"Value": "Berlin"
},
{
"Name": "London",
"Value": "London"
},
{
"Name": "Seattle",
"Value": "Seattle"
}
]
}
]
}
Carregamento das suas alterações
- Depois de concluir as alterações no seu arquivo JSON, volte para o seu locatário B2C.
- Selecione Fluxos de usuário e selecione sua política (por exemplo, "B2C_1_SignupSignin") para abri-la.
- Selecione Idiomas.
- Selecione o idioma para o qual você deseja traduzir.
- Em arquivos de recursos no nível da página, selecione página de inscrição de conta local.
- Selecione o ícone da pasta e selecione o arquivo JSON para upload. As alterações são salvas no fluxo de usuário automaticamente.
Teste o fluxo do usuário
- Selecione sua política (por exemplo, "B2C_1_SignupSignin") para abri-la.
- Para testar a política, selecione Executar fluxo de usuário.
- Em Aplicativo, selecione o aplicativo Web denominado testapp1 registrado anteriormente. A URL de resposta deve mostrar
https://jwt.ms. - Selecionar Executar fluxo de usuário
Visão geral
Você pode coletar dados iniciais dos seus usuários usando a jornada de inscrição ou login do usuário. Você pode coletar mais reivindicações posteriormente usando uma jornada de edição de perfil do usuário. Sempre que o Azure AD B2C coleta informações diretamente do usuário interativamente, ele usa o perfil técnico autodeclarado. Neste exemplo, você:
- Defina uma reivindicação de "cidade".
- Peça ao usuário sua cidade.
- Persista a cidade no perfil do usuário no diretório do Azure AD B2C.
- Lê a declaração de cidade do diretório Azure AD B2C em cada entrada.
- Retorna a cidade para seu aplicativo de terceira parte confiável após a entrada ou inscrição.
Definir uma declaração
Uma declaração fornece um armazenamento temporário de dados durante a execução de uma política do Azure AD B2C. O esquema de declarações é o local onde você declara suas declarações. Os seguintes elementos são usados para definir a declaração:
- DisplayName – Uma cadeia de caracteres que define o rótulo voltado para o usuário.
- DataType – O tipo da declaração.
- UserHelpText – Ajuda o usuário a entender o que é necessário.
- UserInputType - O tipo de controle de entrada, como caixa de texto, seleção de rádio, lista suspensa ou várias seleções.
Abra o arquivo de extensões da política. Por exemplo, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
- Pesquise o elemento BuildingBlocks . Se o elemento não existir, adicione-o.
- Localize o elemento ClaimsSchema . Se o elemento não existir, adicione-o.
- Adicione a declaração da cidade ao elemento ClaimsSchema .
<!--
<BuildingBlocks>
<ClaimsSchema> -->
<ClaimType Id="city">
<DisplayName>City where you work</DisplayName>
<DataType>string</DataType>
<UserInputType>DropdownSingleSelect</UserInputType>
<Restriction>
<Enumeration Text="Berlin" Value="berlin" />
<Enumeration Text="London" Value="london" />
<Enumeration Text="Seattle" Value="seattle" />
</Restriction>
</ClaimType>
<!--
</ClaimsSchema>
</BuildingBlocks>-->
Inclua o atributo SelectByDefault em um Enumeration elemento para torná-lo selecionado por padrão quando a página for carregada pela primeira vez. Por exemplo, para selecionar previamente o item de Londres , altere o Enumeration elemento como o seguinte exemplo:
<Restriction>
<Enumeration Text="Berlin" Value="berlin" />
<Enumeration Text="London" Value="london" SelectByDefault="true" />
<Enumeration Text="Seattle" Value="seattle" />
</Restriction>
Adicionar uma declaração à interface do usuário
Os seguintes perfis técnicos são autodeclarados, invocados quando um usuário deve fornecer entrada:
- LocalAccountSignUpWithLogonEmail – Fluxo de inscrição de conta local.
- SelfAsserted-Social - Login de usuário pela primeira vez na conta federada.
- SelfAsserted-ProfileUpdate – Editar fluxo de perfil.
Para coletar a reivindicação da cidade durante a inscrição, ela deve ser adicionada como uma reivindicação de saída ao LocalAccountSignUpWithLogonEmail perfil técnico. Substitua esse perfil técnico no arquivo de extensão. Especifique toda a lista de declarações de saída para controlar a ordem em que as declarações são apresentadas na tela. Localize o elemento ClaimsProviders. Adicione um novo ClaimsProviders da seguinte maneira:
<ClaimsProvider>
<DisplayName>Local Account</DisplayName>
<TechnicalProfiles>
<!--Local account sign-up page-->
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
<OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surName" />
<OutputClaim ClaimTypeReferenceId="city"/>
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Para coletar a reivindicação da cidade após o login inicial com uma conta federada, ela deve ser adicionada como uma reivindicação de saída ao SelfAsserted-Social perfil técnico. Para que os usuários da conta local e federada possam editar seus dados de perfil mais tarde, adicione as declarações de entrada e saída ao SelfAsserted-ProfileUpdate perfil técnico. Substitua esses perfis técnicos no arquivo de extensão. Especifique a lista inteira das declarações de saída para controlar a ordem em que as declarações são apresentadas na tela. Localize o elemento ClaimsProviders. Adicione um novo ClaimsProviders da seguinte maneira:
<ClaimsProvider>
<DisplayName>Self Asserted</DisplayName>
<TechnicalProfiles>
<!--Federated account first-time sign-in page-->
<TechnicalProfile Id="SelfAsserted-Social">
<InputClaims>
<InputClaim ClaimTypeReferenceId="city" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName"/>
<OutputClaim ClaimTypeReferenceId="givenName"/>
<OutputClaim ClaimTypeReferenceId="surname"/>
<OutputClaim ClaimTypeReferenceId="city"/>
</OutputClaims>
</TechnicalProfile>
<!--Edit profile page-->
<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
<InputClaims>
<InputClaim ClaimTypeReferenceId="city" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName"/>
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="city"/>
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Leia e escreva uma reclamação
Os perfis técnicos a seguir são perfis técnicos do Active Directory, que leem e gravam dados na ID do Microsoft Entra.
Use PersistedClaims para gravar dados no perfil do usuário e OutputClaims ler dados do perfil do usuário nos respectivos perfis técnicos do Active Directory.
Substitua esses perfis técnicos no arquivo de extensão. Localize o elemento ClaimsProviders. Adicione um novo ClaimsProviders da seguinte maneira:
<ClaimsProvider>
<DisplayName>Azure Active Directory</DisplayName>
<TechnicalProfiles>
<!-- Write data during a local account sign-up flow. -->
<TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="city"/>
</PersistedClaims>
</TechnicalProfile>
<!-- Write data during a federated account first-time sign-in flow. -->
<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="city"/>
</PersistedClaims>
</TechnicalProfile>
<!-- Write data during edit profile flow. -->
<TechnicalProfile Id="AAD-UserWriteProfileUsingObjectId">
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="city"/>
</PersistedClaims>
</TechnicalProfile>
<!-- Read data after user resets the password. -->
<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="city" />
</OutputClaims>
</TechnicalProfile>
<!-- Read data after user authenticates with a local account. -->
<TechnicalProfile Id="AAD-UserReadUsingObjectId">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="city" />
</OutputClaims>
</TechnicalProfile>
<!-- Read data after user authenticates with a federated account. -->
<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="city" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Incluir uma reivindicação dentro do token
Para retornar a reivindicação da cidade ao aplicativo da parte confiável, adicione uma reivindicação de saída ao arquivo SocialAndLocalAccounts/SignUpOrSignIn.xml. A declaração de saída será adicionada ao token após uma jornada bem-sucedida do usuário e será enviada ao aplicativo. Modifique o elemento do perfil técnico na seção da parte confiável para adicionar a cidade como uma reivindicação de saída.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<OutputClaim ClaimTypeReferenceId="city" DefaultValue="" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
Carregar e testar sua política personalizada atualizada
- 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.
- Procure e selecione o Azure AD B2C.
- Em Políticas, selecione Identity Experience Framework.
- Selecione Carregar política personalizada.
- Carregue os arquivos de política que você alterou anteriormente.
Teste a política personalizada
- Selecione a política de terceira parte confiável, por exemplo,
B2C_1A_signup_signin. - Em Aplicativo, selecione o aplicativo Web que você registrou anteriormente. A URL de resposta deve mostrar
https://jwt.ms. - Clique no botão Executar agora.
- Na página de inscrição ou entrada, selecione Inscrever-se agora para se inscrever. Conclua a inserção das informações do usuário, incluindo o nome da cidade e selecione Criar. Você deve ver o conteúdo do token que foi retornado.
A tela de inscrição deve ser semelhante à seguinte captura de tela:
O token enviado de volta ao seu aplicativo inclui a declaração city .
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
"exp": 1583500140,
"nbf": 1583496540,
"ver": "1.0",
"iss": "https://contoso.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/",
"aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
"acr": "b2c_1a_signup_signin",
"nonce": "defaultNonce",
"iat": 1583496540,
"auth_time": 1583496540,
"name": "Emily Smith",
"email": "joe@outlook.com",
"given_name": "Emily",
"family_name": "Smith",
"city": "Berlin"
...
}
[Opcional] Localizar a interface do usuário
O Azure AD B2C permite que você acomode sua política para idiomas diferentes. Para obter mais informações, saiba mais sobre como personalizar a experiência de idioma. Para localizar a página de inscrição, configure a lista de idiomas com suporte e forneça rótulos específicos do idioma.
Observação
Ao usar o LocalizedCollection com os rótulos específicos do idioma, você pode remover a Restriction coleção da definição de reivindicação.
O exemplo a seguir demonstra como fornecer a lista de cidades para inglês e espanhol. Ambos definem a Restriction coleção da reivindicação cidade com uma lista de itens para inglês e espanhol. O SelectByDefault faz um item selecionado por padrão quando a página é carregada pela primeira vez.
<!--
<BuildingBlocks>-->
<Localization Enabled="true">
<SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
<SupportedLanguage>en</SupportedLanguage>
<SupportedLanguage>es</SupportedLanguage>
</SupportedLanguages>
<LocalizedResources Id="api.localaccountsignup.en">
<LocalizedCollections>
<LocalizedCollection ElementType="ClaimType" ElementId="city" TargetCollection="Restriction">
<Item Text="Berlin" Value="Berlin"></Item>
<Item Text="London" Value="London" SelectByDefault="true"></Item>
<Item Text="Seattle" Value="Seattle"></Item>
</LocalizedCollection>
</LocalizedCollections>
</LocalizedResources>
<LocalizedResources Id="api.localaccountsignup.es">
<LocalizedCollections>
<LocalizedCollection ElementType="ClaimType" ElementId="city" TargetCollection="Restriction">
<Item Text="Berlina" Value="Berlin"></Item>
<Item Text="Londres" Value="London" SelectByDefault="true"></Item>
<Item Text="Seattle" Value="Seattle"></Item>
</LocalizedCollection>
</LocalizedCollections>
</LocalizedResources>
</Localization>
<!--
</BuildingBlocks>-->
Depois de adicionar o elemento de localização, edite a definição de conteúdo com a localização. No exemplo a seguir, os recursos personalizados em inglês (en) e espanhol (es) são adicionados à página de inscrição:
<!--
<BuildingBlocks>
<ContentDefinitions> -->
<ContentDefinition Id="api.localaccountsignup">
<LocalizedResourcesReferences MergeBehavior="Prepend">
<LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.localaccountsignup.en" />
<LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.localaccountsignup.es" />
</LocalizedResourcesReferences>
</ContentDefinition>
<!--
</ContentDefinitions>
</BuildingBlocks>-->
Próximas etapas
- Saiba mais sobre o elemento ClaimsSchema na referência IEF.
- Saiba como usar atributos personalizados no Azure AD B2C.