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.
Neste tutorial, aprenda a integrar a autenticação do Azure AD B2C (Azure Active Directory B2C) à solução de ID digital xID. O aplicativo xID fornece aos usuários autenticação multifator sem senha, segura. O Cartão Meu Número, o cartão de ID digital emitido pelo governo japonês, verifica as identidades de usuário autenticadas por xID. Para seus usuários, as organizações podem obter informações de identificação pessoal verificadas (conteúdo do cliente) por meio da API xID. Além disso, o aplicativo xID gera uma chave privada em uma área segura em dispositivos móveis do usuário, tornando-os dispositivos de assinatura digital.
Pré-requisitos
Uma assinatura do Azure
- Se você não tiver uma, poderá obter uma conta gratuita do Azure
Um locatário do Azure AD B2C vinculado à assinatura do Azure
Suas informações de cliente xID fornecidas pela xID inc.
Acesse a página Contato conosco do xid.inc para obter informações sobre o cliente xID:
- ID do cliente
- Segredo de Cliente
- URL de redirecionamento
- Escopos
Acesse x-id.me para instalar o aplicativo xID em um dispositivo móvel:
- Meu cartão de número
- Se você usar a versão UAT da API, obtenha a versão UAT do aplicativo xID. Consulte, Entre em contato conosco
Descrição do cenário
O diagrama a seguir mostra a arquitetura.
- Na página de entrada do Azure AD B2C, o usuário entra ou se inscreve.
- O Azure AD B2C redireciona o usuário para o ponto de extremidade da API de autorização do xID usando uma solicitação OIDC (OpenID Connect). Um ponto de extremidade OIDC tem informações do ponto de extremidade. O provedor de identidade xID (IdP) redireciona o usuário para a página de entrada de autorização xID. O usuário insere o endereço de email.
- O IdP xID envia uma notificação por push para o dispositivo móvel do usuário.
- O usuário abre o aplicativo xID, verifica a solicitação, insere um PIN ou usa biometria. O aplicativo xID ativa a chave privada e cria uma assinatura eletrônica.
- O aplicativo xID envia a assinatura para o IdP xID para verificação.
- Uma tela de consentimento parece fornecer informações pessoais ao serviço.
- O IdP xID retorna o código de autorização OAuth para o Azure AD B2C.
- O Azure AD B2C envia uma solicitação de token usando o código de autorização.
- O xID IdP verifica a solicitação de token. Se válido, o token de acesso OAuth será retornado e o token de ID com identificador de usuário e endereço de email.
- Se o conteúdo do cliente do usuário for necessário, o Azure AD B2C chamará a API de dados do usuário xID.
- A API de dados do usuário xID retorna conteúdo criptografado do cliente. Os usuários descriptografam com uma chave privada, criada ao solicitar informações do cliente xID.
- O acesso do usuário ao aplicativo do cliente é concedido ou negado.
Instalar xID
- Para solicitar documentos de API, preencha o formulário de solicitação. Vá para Entrar em contato conosco.
- Na mensagem, indique que você está usando o Azure AD B2C.
- Um representante de vendas xID entra em contato com você.
- Siga as instruções no documento da API xID.
- Solicite um cliente de API xID.
- A equipe de tecnologia xID envia informações do cliente para você em 3 a 4 dias úteis.
- Forneça um URI de redirecionamento em seu site usando o padrão a seguir. Os usuários retornam a ele após a autenticação.
https://<your-b2c-domain>.b2clogin.com/<your-b2c-domain>.onmicrosoft.com/oauth2/authresp
Registrar um aplicativo Web no Azure AD B2C
Registre aplicativos em um locatário que você gerencia e, em seguida, eles podem interagir com o Azure AD B2C.
Saiba mais: Tipos de aplicativo que podem ser usados no Active Directory B2C
Para testar, você registra https://jwt.msum aplicativo Web da Microsoft com conteúdo de token decodificado, que não sai do navegador.
Registrar um aplicativo Web
Conclua as etapas no Tutorial: registrar um aplicativo Web no artigo do Azure Active Directory B2C .
Criar uma chave de política xID
Armazene o Segredo do Cliente do xID em seu locatário do Azure AD B2C. Para obter as instruções a seguir, use o diretório com o locatário Azure AD B2C.
- Entre no portal do Azure.
- Na barra de ferramentas do portal, selecione Diretórios + assinaturas.
- Nas configurações do Portal | Página Diretórios + assinaturas , na lista de nomes do Diretório, localize seu diretório do Azure AD B2C.
- Selecione Alternar.
- No canto superior esquerdo do portal do Azure, selecione Todos os serviços.
- Pesquise e selecione Azure AD B2C.
- Em Visão geral, selecione Identity Experience Framework.
- Selecione Chaves de Política.
- Selecione Adicionar.
- Para Opções, selecione Manual.
- Insira um Nome para a chave de política. O prefixo
B2C_1A_é acrescentado ao nome da chave. - Em Segredo, insira o Segredo do Cliente do xID.
- Para Uso de chave, selecione Assinatura.
- Selecione Criar.
Observação
No Azure AD B2C, as políticas personalizadas são para cenários complexos.
Veja a visão geral dos fluxos do usuário e das políticas personalizadas.
Configurar xID como provedor de identidade
Para que os usuários entrem usando o xID, defina o xID como provedor de declarações com o qual o Azure AD B2C se comunica por meio de um ponto de extremidade. O ponto de extremidade fornece declarações que o Azure AD B2C usa para verificar os usuários autenticados com a identidade digital em seu dispositivo.
Adicionar xID como um provedor de declarações
Obtenha os pacotes iniciais de políticas personalizadas no GitHub. Em seguida, atualize os arquivos XML no pacote de início de SocialAccounts com o nome de seu locatário do Azure AD B2C.
Baixe o arquivo zip active-directory-b2c-policy-starterpack-main ou clone o repositório. Confira, Azure-Samples/active-directory-b2c-custom-policy-starterpack.
Nos arquivos no diretório SocialAccounts , substitua a cadeia
yourtenantde caracteres pelo nome do locatário do Azure AD B2C. Por exemplo,yourtenant.onmicrosoft.comse tornarácontoso.onmicrosoft.com.Abra o SocialAccounts/TrustFrameworkExtensions.xml.
Localize o elemento ClaimsProviders. Se não houver um, adicione-o sob o elemento raiz.
Adicione um novo ClaimsProvider semelhante ao exemplo a seguir:
<ClaimsProvider> <Domain>X-ID</Domain> <DisplayName>X-ID</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="X-ID-OIDC"> <DisplayName>X-ID</DisplayName> <Description>Login with your X-ID account</Description> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://oidc-uat.x-id.io/.well-known/openid-configuration</Item> <!-- Update the Client ID below to the X-ID Application ID --> <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid verification</Item> <Item Key="response_mode">query</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="DiscoverMetadataByTokenIssuer">true</Item> <Item Key="token_endpoint_auth_method">client_secret_basic</Item> <Item Key="ClaimsEndpoint">https://oidc-uat.x-id.io/userinfo</Item> <Item Key="ValidTokenIssuerPrefixes">https://oidc-uat.x-id.io/</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_XIDSecAppSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid" /> <OutputClaim ClaimTypeReferenceId="email" /> <OutputClaim ClaimTypeReferenceId="sid" /> <OutputClaim ClaimTypeReferenceId="userdataid" /> <OutputClaim ClaimTypeReferenceId="XID_verified" /> <OutputClaim ClaimTypeReferenceId="email_verified" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" DefaultValue="https://oidc-uat.x-id.io/" /> <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> <TechnicalProfile Id="X-ID-Userdata"> <DisplayName>Userdata (Personal Information)</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ServiceUrl">https://api-uat.x-id.io/v4/verification/userdata</Item> <Item Key="SendClaimsIn">Header</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">identityProviderAccessToken</Item> <!-- <Item Key="AllowInsecureAuthInProduction">true</Item> --> <Item Key="DebugMode">true</Item> <Item Key="DefaultUserMessageIfRequestFailed">Can't process your request right now, please try again later.</Item> </Metadata> <InputClaims> <!-- Claims sent to your REST API --> <InputClaim ClaimTypeReferenceId="identityProviderAccessToken" /> </InputClaims> <OutputClaims> <!-- Claims parsed from your REST API --> <OutputClaim ClaimTypeReferenceId="last_name" /> <OutputClaim ClaimTypeReferenceId="first_name" /> <OutputClaim ClaimTypeReferenceId="previous_name" /> <OutputClaim ClaimTypeReferenceId="year" /> <OutputClaim ClaimTypeReferenceId="month" /> <OutputClaim ClaimTypeReferenceId="date" /> <OutputClaim ClaimTypeReferenceId="prefecture" /> <OutputClaim ClaimTypeReferenceId="city" /> <OutputClaim ClaimTypeReferenceId="address" /> <OutputClaim ClaimTypeReferenceId="sub_char_common_name" /> <OutputClaim ClaimTypeReferenceId="sub_char_previous_name" /> <OutputClaim ClaimTypeReferenceId="sub_char_address" /> <OutputClaim ClaimTypeReferenceId="gender" /> <OutputClaim ClaimTypeReferenceId="verified_at" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>Defina client_id com a ID do aplicativo xID.
Clique em Salvar.
Adicione um percurso de usuário
Adicione um provedor de identidade às páginas de login.
- Se você tiver um percurso de usuário personalizado, vá para Adicionar o provedor de identidade a um percurso do usuário. Caso contrário, crie uma duplicata de um percurso de usuário de modelo:
- No pacote inicial, abra o TrustFrameworkBase.xml.
- Localize e copie o conteúdo do elemento UserJourneys que inclui
ID=SignUpOrSignIn. - Abra o TrustFrameworkExtensions.xml e localize o elemento UserJourneys. Se não houver um, adicione um.
- Cole o conteúdo do elemento UserJourney como filho do elemento UserJourneys.
- Renomeie a ID do percurso do usuário. Por exemplo,
ID=CustomSignUpSignIn
Adicione o provedor de identidade a um percurso de usuário
Adicione o novo provedor de identidade ao percurso do usuário.
- Localize o elemento da etapa de orquestração com Type=
CombinedSignInAndSignUpou Type=ClaimsProviderSelectionno percurso do usuário. Normalmente é a primeira etapa de orquestração. O elemento ClaimsProviderSelections tem uma lista de provedores de identidade para entrar. A ordem dos elementos controla a ordem dos botões de entrada. - Adicione um elemento XML ClaimsProviderSelection.
- Defina o valor de TargetClaimsExchangeId com um nome amigável.
- Adicione um elemento ClaimsExchange .
- Defina a ID como o valor da ID de troca de declarações de destino. Essa alteração vincula o botão xID à
X-IDExchangeação. - Atualize o valor TechnicalProfileReferenceId para a ID do perfil técnico que você criou (
X-ID-OIDC). - Adicione uma etapa de Orquestração para chamar o endpoint xID UserInfo para retornar declarações sobre o usuário autenticado
X-ID-Userdata.
O XML a seguir demonstra a orquestração de percurso do usuário com o provedor de identidade xID.
<UserJourney Id="CombinedSignInAndSignUp">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="X-IDExchange" />
</ClaimsProviderSelections>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="X-IDExchange" TechnicalProfileReferenceId="X-ID-OIDC" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="X-ID-Userdata" TechnicalProfileReferenceId="X-ID-Userdata" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- For social IDP authentication, attempt to find the user account in the directory. -->
<OrchestrationStep Order="4" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- Show self-asserted page only if the directory does not have the user account already (i.e. we do not have an objectId). -->
<OrchestrationStep Order="5" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- The previous step (SelfAsserted-Social) could have been skipped if there were no attributes to collect
from the user. So, in that case, create the user in the directory if one does not already exist
(verified using objectId which would be set from the last step if account was created in the directory. -->
<OrchestrationStep Order="6" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
Há declarações de identidade que o xID dá suporte e são referenciadas como parte da política. O esquema de declarações é onde você declara as declarações. O elemento ClaimsSchema tem uma lista de elementos ClaimType. O elemento ClaimType contém o atributo ID, que é o nome da declaração.
- Abra o TrustFrameworksExtension.xml.
- Localize o elemento BuildingBlocks .
- Adicionar o seguinte elemento ClaimType no elemento ClaimsSchema da política deTrustFrameworksExtension.xml
<BuildingBlocks>
<ClaimsSchema>
<!-- xID -->
<ClaimType Id="sid">
<DisplayName>sid</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="userdataid">
<DisplayName>userdataid</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="xid_verified">
<DisplayName>xid_verified</DisplayName>
<DataType>boolean</DataType>
</ClaimType>
<ClaimType Id="email_verified">
<DisplayName>email_verified</DisplayName>
<DataType>boolean</DataType>
</ClaimType>
<ClaimType Id="identityProviderAccessToken">
<DisplayName>Identity Provider Access Token</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
</ClaimType>
<ClaimType Id="last_name">
<DisplayName>last_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="first_name">
<DisplayName>first_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="previous_name">
<DisplayName>previous_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="year">
<DisplayName>year</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="month">
<DisplayName>month</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="date">
<DisplayName>date</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="prefecture">
<DisplayName>prefecture</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="city">
<DisplayName>city</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="address">
<DisplayName>address</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="sub_char_common_name">
<DisplayName>sub_char_common_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="sub_char_previous_name">
<DisplayName>sub_char_previous_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="sub_char_address">
<DisplayName>sub_char_address</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="verified_at">
<DisplayName>verified_at</DisplayName>
<DataType>int</DataType>
</ClaimType>
<ClaimType Id="gender">
<DisplayName>Gender</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OpenIdConnect" PartnerClaimType="gender" />
</DefaultPartnerClaimTypes>
<AdminHelpText>The user's gender.</AdminHelpText>
<UserHelpText>Your gender.</UserHelpText>
<UserInputType>TextBox</UserInputType>
</ClaimType>
<ClaimType Id="correlationId">
<DisplayName>correlation ID</DisplayName>
<DataType>string</DataType>
</ClaimType>
<!-- xID -->
</ClaimsSchema>
</BuildingBlocks>
Configurar a política de terceira parte confiável
A política de terceira parte confiável, por exemplo SignUpSignIn.xml, especifica o percurso do usuário que o Azure AD B2C executa.
- Na terceira parte confiável, localize o elemento DefaultUserJourney.
- Atualize a ReferenceId para corresponder à ID de percurso do usuário que você adicionou ao provedor de identidade.
No exemplo a seguir, para o percurso do usuário xID, a ReferenceId é definida como CombinedSignInAndSignUp.
<RelyingParty>
<DefaultUserJourney ReferenceId="CombinedSignInAndSignUp" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<OutputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
<OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="last_name" />
<OutputClaim ClaimTypeReferenceId="previous_name" />
<OutputClaim ClaimTypeReferenceId="year" />
<OutputClaim ClaimTypeReferenceId="month" />
<OutputClaim ClaimTypeReferenceId="date" />
<OutputClaim ClaimTypeReferenceId="prefecture" />
<OutputClaim ClaimTypeReferenceId="city" />
<OutputClaim ClaimTypeReferenceId="address" />
<OutputClaim ClaimTypeReferenceId="sub_char_common_name" />
<OutputClaim ClaimTypeReferenceId="sub_char_previous_name" />
<OutputClaim ClaimTypeReferenceId="sub_char_address" />
<OutputClaim ClaimTypeReferenceId="gender" />
<OutputClaim ClaimTypeReferenceId="verified_at" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="sid" />
<OutputClaim ClaimTypeReferenceId="userdataid" />
<OutputClaim ClaimTypeReferenceId="xid_verified" />
<OutputClaim ClaimTypeReferenceId="email_verified" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
Carregar a política personalizada
Para obter as instruções a seguir, use o diretório com o locatário Azure AD B2C.
- Entre no portal do Azure.
- Na barra de ferramentas do portal, selecione os Diretórios + assinaturas.
- Nas configurações do Portal | Página Diretórios + assinaturas , na lista de nomes do Diretório . localize o diretório do Azure AD B2C.
- Selecione Alternar.
- No portal do Azure, pesquise e selecione o Azure AD B2C.
- Em Políticas, selecione Identity Experience Framework.
- Selecione Carregar Política Personalizada.
- Carregue os arquivos na seguinte ordem:
- Arquivo de política base:
TrustFrameworkBase.xml - Política de extensão:
TrustFrameworkExtensions.xml - Política da terceira parte confiável:
SignUpSignIn.xml
Teste a política personalizada
- Em seu locatário do Azure AD B2C e, em Políticas, selecione Identity Experience Framework.
- Em políticas personalizadas, selecione CustomSignUpSignIn.
- Para o Aplicativo, selecione o aplicativo Web que você registrou. A URL de Resposta é
https://jwt.ms. - Selecione Executar agora.
- O navegador redireciona para a página de entrada xID.
- O navegador redireciona para
https://jwt.ms. O conteúdo do token retornado pelo Azure AD B2C é exibido.