Defina um perfil técnico OpenId Connect 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 Active Directory B2C (Azure AD B2C) é compatível com o provedor de identidade do protocolo OpenID Connect. O OpenID Connect 1.0 define uma camada de identidade com base em OAuth 2.0 e representa a estado de última geração em protocolos de autenticação modernos. Com o perfil técnico do OpenID Connect, você pode federar com um provedor de identidade baseado no OpenID Connect, como a ID do Microsoft Entra. A Federação com um provedor de identidade permite que os usuários entrem com identidades sociais ou empresariais existentes.
Protocolo
O atributo Name do elemento Protocol precisa ser definido como OpenIdConnect
. Por exemplo, o protocolo para o perfil técnico MSA-OIDC é OpenIdConnect
:
<TechnicalProfile Id="MSA-OIDC">
<DisplayName>Microsoft Account</DisplayName>
<Protocol Name="OpenIdConnect" />
...
Declarações de entrada
Os elementos InputClaims e InputClaimsTransformations não são necessários. Mas talvez você queira enviar parâmetros adicionais para seu provedor de identidade. O exemplo a seguir adiciona o parâmetro de cadeia de caracteres de consulta domain_hint com o valor de contoso.com
à solicitação de autorização.
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>
Declarações de saída
O elemento OutputClaims contém uma lista de declarações retornadas pelo provedor de identidade OpenID Connect. Talvez seja necessário mapear o nome da declaração definida em sua política para o nome definido no provedor de identidade. Você também pode incluir declarações que não são retornadas pelo provedor de identidade, desde que defina o atributo DefaultValue
.
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.
O exemplo a seguir mostra as declarações retornadas pelo provedor de identidade de Conta Microsoft:
- A declaração sub que é mapeada para a declaração issuerUserId.
- A declaração name que é mapeada para a declaração displayName.
- O email sem mapeamento de nome.
O perfil técnico também retorna declarações que não são retornadas pelo provedor de identidade:
- A declaração identityProvider que contém o nome do provedor de identidade.
- A declaração authenticationSource com um valor padrão de socialIdpAuthentication.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
Metadados
Atributo | Obrigatório | Descrição |
---|---|---|
client_id | Sim | O identificador do aplicativo do provedor de identidade. |
IdTokenAudience | Não | O público-alvo do id_token. Se for especificado, o Azure AD B2C verificará se a declaração aud em um token retornado pelo provedor de identidade é igual àquela especificada nos metadados do IdTokenAudience. |
METADATA | Sim | Uma URL que aponta para um documento de configuração do provedor de identidade do OpenID Connect, que também é conhecido como ponto de extremidade de configuração bem conhecido do OpenID. A URL pode conter a expressão {tenant} , que é substituída pelo nome do locatário. |
authorization_endpoint | Não | Uma URL que aponta para um ponto de extremidade da autorização de configuração do provedor de identidade do OpenID Connect. O valor dos metadados de authorization_endpoint tem precedência sobre o authorization_endpoint especificado no ponto de extremidade de configuração bem conhecido do OpenID. A URL pode conter a expressão {tenant} , que é substituída pelo nome do locatário. |
end_session_endpoint | Não | O URL do ponto de extremidade da sessão. O valor dos metadados do end_session_endpoint tem precedência sobre o end_session_endpoint especificado no ponto de extremidade de configuração conhecido do OpenID. |
emissor | Não | O identificador exclusivo de um provedor de identidade do OpenID Connect. O valor dos metadados do emissor tem precedência sobre o issuer especificado no ponto de extremidade de configuração bem conhecido do OpenID. Se for especificado, o Azure AD B2C verificará se a declaração iss em um token retornado pelo provedor de identidade é igual àquela especificada nos metadados do emissor. |
ProviderName | Não | O nome do provedor de identidade. |
response_types | Não | O tipo de resposta de acordo com a especificação do OpenID Connect Core 1.0. Valores possíveis: id_token , code ou token . |
response_mode | Não | O método que o provedor de identidade usa para enviar o resultado de volta ao Azure AD B2C. Valores possíveis: query , form_post (padrão) ou fragment . |
scope | Não | O escopo da solicitação definida de acordo com a especificação do OpenID Connect Core 1.0. Como openid , profile e email . |
HttpBinding | Não | A associação HTTP esperada para o token de acesso e pontos de extremidade do token de declarações. Valores possíveis: GET ou POST . |
ValidTokenIssuerPrefixes | Não | Uma chave que pode ser usada para entrar nos locatários ao usar um provedor de identidade multilocatário, como a ID do Microsoft Entra. |
UsePolicyInRedirectUri | Não | Indica se deve ser usada uma política ao criar o URI de redirecionamento. Quando você configura seu aplicativo no provedor de identidade, precisa especificar o URI de redirecionamento. Os pontos de URI de redirecionamento para o Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp . Se você especificar true , precisará adicionar um URI de redirecionamento a cada política que você usar. Por exemplo: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp . |
MarkAsFailureOnStatusCode5xx | Não | Indica se uma solicitação para um serviço externo deverá ser marcada como uma falha se o código de status Http estiver no intervalo 5xx. O padrão é false . |
DiscoverMetadataByTokenIssuer | Não | Indica se os metadados OIDC devem ser descobertos usando o emissor no token JWT. Se você precisar criar a URL do ponto de extremidade de metadados com base no emissor, defina-o como true . |
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). Se você quiser usar um resolvedor de declarações no perfil técnico, defina como true . |
token_endpoint_auth_method | Não | Especifica como Azure AD B2C envia o cabeçalho de autenticação para o ponto de extremidade do token. Valores possíveis: client_secret_post (padrão) e client_secret_basic , private_key_jwt . Para obter mais informações, confira a seção autenticação de cliente do OpenID Connect. |
token_signing_algorithm | Não | Especifica o algoritmo de assinatura a ser usado quando token_endpoint_auth_method é definido como private_key_jwt . Valores possíveis: RS256 (padrão) ou RS512 . |
SingleLogoutEnabled | Não | Indica se, durante a entrada, o perfil técnico tenta sair de provedores de identidade federada. Para obter mais informações, consulte Saída da sessão do Azure AD B2C. Valores possíveis: true (padrão) ou false . |
ReadBodyClaimsOnIdpRedirect | Não | Defina como true para ler declarações do corpo da resposta no redirecionamento do provedor de identidade. Esses metadados são usados com o Apple ID, em que as declarações retornam no payload de resposta. |
<Metadata>
<Item Key="ProviderName">https://login.live.com</Item>
<Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
<Item Key="response_types">code</Item>
<Item Key="response_mode">form_post</Item>
<Item Key="scope">openid profile email</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>
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 do OpenID Connect. A mensagem de erro pode ser localizada.
Atributo | Obrigatório | Descrição |
---|---|---|
UserMessageIfClaimsPrincipalDoesNotExist | Não | A mensagem a exibir ao usuário se uma conta com o nome de usuário informado não for encontrada no diretório. |
UserMessageIfInvalidPassword | Não | A mensagem a exibir ao usuário se a senha estiver incorreta. |
UserMessageIfOldPasswordUsed | Não | A mensagem a exibir ao usuário se uma senha antiga for usada. |
Chaves criptográficas
O elemento CryptographicKeys contém o seguinte atributo:
Atributo | Obrigatório | Descrição |
---|---|---|
client_secret | Sim | O segredo do cliente do aplicativo do provedor de identidade. Essa chave de criptografia será necessária somente se os metadados response_types estiverem definidos como code e token_endpoint_auth_method como client_secret_post ou client_secret_basic . Nesse caso, o Azure AD B2C faz outra chamada para trocar o código de autorização para um token de acesso. Se os metadados forem definidos como id_token , você poderá omitir a chave de criptografia. |
assertion_signing_key | Sim | A chave privada RSA que será usada para assinar a instrução de declaração do cliente. Essa chave de criptografia será necessária somente se os metadados token_endpoint_auth_method forem configurados como private_key_jwt . |
URI de redirecionamento
Ao configurar o URI de redirecionamento do seu provedor de identidade, insira https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp
. Não se esqueça de substituir {your-tenant-name}
pelo nome do locatário. O URI de redirecionamento deve ser todo em letras minúsculas.
Exemplos: