Definir um perfil técnico do OpenID Connect em uma política personalizada do Azure Ative Directory B2C
Nota
No Azure Ative Directory B2C, as políticas personalizadas são projetadas principalmente para lidar com cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuário internos. Se você não tiver feito isso, saiba mais sobre o pacote inicial de políticas personalizadas em Introdução às políticas personalizadas no Ative Directory B2C.
O Azure Ative Directory B2C (Azure AD B2C) fornece suporte para o provedor de identidade do protocolo OpenID Connect . O OpenID Connect 1.0 define uma camada de identidade sobre o OAuth 2.0 e representa o estado da arte em protocolos de autenticação modernos. Com um perfil técnico do OpenID Connect, você pode se federar com um provedor de identidade baseado no OpenID Connect, como o Microsoft Entra ID. A federação com um provedor de identidade permite que os usuários entrem com suas 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 você pode querer 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 à solicitação de contoso.com
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 DefaultValue
atributo.
O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation que são usados para modificar as declarações de saída ou gerar novas.
O exemplo a seguir mostra as declarações retornadas pelo provedor de identidade da Conta da Microsoft:
- A subdeclaração que é mapeada para a declaração issuerUserId .
- A declaração de nome mapeada para a declaração displayName .
- O e-mail 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 | Necessário | Description |
---|---|---|
client_id | Sim | O identificador de aplicativo do provedor de identidade. |
IdTokenAudience | Não | O público do id_token. Se especificado, o Azure AD B2C verifica se a aud declaração em um token retornado pelo provedor de identidade é igual à especificada nos metadados IdTokenAudience. |
METADADOS | Sim | Uma URL que aponta para um documento de configuração do provedor de identidade OpenID Connect, que também é conhecido como ponto de extremidade de configuração conhecido do OpenID. A URL pode conter a {tenant} expressão, que é substituída pelo nome do locatário. |
authorization_endpoint | Não | Uma URL que aponta para um ponto de extremidade de autorização de configuração do provedor de identidade OpenID Connect. O valor dos metadados authorization_endpoint tem precedência sobre o authorization_endpoint especificado no ponto de extremidade de configuração conhecido do OpenID. A URL pode conter a {tenant} expressão, que é substituída pelo nome do locatário. |
end_session_endpoint | Não | A URL do ponto de extremidade da sessão final. O valor dos metadados tem precedência sobre o end_session_endpoint especificado no ponto de end_session_endpoint extremidade de configuração conhecido do OpenID. |
emitente | Não | O identificador exclusivo de um provedor de identidade OpenID Connect. O valor dos metadados do emissor tem precedência sobre o issuer especificado no ponto de extremidade de configuração conhecido do OpenID. Se especificado, o Azure AD B2C verifica se a iss declaração em um token retornado pelo provedor de identidade é igual à 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 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 para o Azure AD B2C. Valores possíveis: query , form_post (padrão) ou fragment . |
âmbito | Não | O escopo da solicitação que é definido de acordo com a especificação OpenID Connect Core 1.0. Tais como openid , profile , e email . |
HttpBinding | Não | A ligação HTTP esperada ao token de acesso e aos 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 em cada um dos locatários ao usar um provedor de identidade multilocatário, como o Microsoft Entra ID. |
UsePolicyInRedirectUri | Não | Indica se uma política deve ser usada ao construir o URI de redirecionamento. Ao configurar seu aplicativo no provedor de identidade, você precisa especificar o URI de redirecionamento. O URI de redirecionamento aponta 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 para cada política usada. 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 deve ser marcada como uma falha se o código de status Http estiver no intervalo 5xx. A predefiniçã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 como true . |
IncludeClaimResolvingInClaimsHandling | Não | Para 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 isso como true . |
token_endpoint_auth_method | Não | Especifica como o 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, consulte a seção de autenticação de cliente OpenID Connect. |
token_signing_algorithm | Não | Especifica o algoritmo de assinatura a ser usado quando token_endpoint_auth_method estiver 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 de sessão do Azure AD B2C. Valores possíveis: true (padrão) ou false . |
ReadBodyClaimsOnIdpRedirect | Não | Defina para true ler as declarações do corpo da resposta no redirecionamento do provedor de identidade. Esses metadados são usados com o ID Apple, onde as declarações retornam na carga útil da 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 IU
As configurações a seguir podem ser usadas para configurar a mensagem de erro exibida em caso de falha. Os metadados devem ser configurados no perfil técnico do OpenID Connect. As mensagens de erro podem ser localizadas.
Atributo | Necessário | Description |
---|---|---|
UserMessageIfClaimsPrincipalDoesNotExist | Não | A mensagem a ser exibida para o usuário se uma conta com o nome de usuário fornecido não for encontrada no diretório. |
UserMessageIfInvalidPassword | Não | A mensagem a ser exibida ao usuário se a senha estiver incorreta. |
UserMessageIfOldPasswordUsed | Não | A mensagem a ser exibida ao usuário se uma senha antiga for usada. |
Chaves criptográficas
O elemento CryptographicKeys contém o seguinte atributo:
Atributo | Necessário | Description |
---|---|---|
client_secret | Sim | O segredo do cliente do aplicativo do provedor de identidade. Essa chave criptográfica é necessária somente se os metadados response_types estiverem definidos como code e token_endpoint_auth_method estiver definido 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 por um token de acesso. Se os metadados estiverem definidos como id_token você pode omitir a chave criptográfica. |
assertion_signing_key | Sim | A chave privada RSA que será usada para assinar a declaração do cliente. Essa chave criptográfica é necessária somente se os metadados token_endpoint_auth_method estiverem definidos como private_key_jwt . |
Redirecionar URL
Ao configurar o URI de redirecionamento do seu provedor de identidade, digite https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp
. Certifique-se de substituir {your-tenant-name}
pelo nome do seu inquilino. O URI de redirecionamento precisa estar em letras minúsculas.
Exemplos: