Definir um perfil técnico do OpenID Connect numa política personalizada do Azure Active Directory B2C

Nota

No Azure Active Directory B2C, as políticas personalizadas são concebidas principalmente para abordar cenários complexos. Para a maioria dos cenários, recomendamos que utilize fluxos de utilizador incorporados. Se ainda não o fez, saiba mais sobre o pacote de introdução de políticas personalizadas em Introdução às políticas personalizadas no Active Directory B2C.

O Azure Active Directory B2C (Azure AD B2C) fornece suporte para o fornecedor 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 nos protocolos de autenticação moderna. Com um perfil técnico do OpenID Connect, pode federar com um fornecedor de identidade baseado em OpenID Connect, como Microsoft Entra ID. A federação com um fornecedor de identidade permite que os utilizadores iniciem sessão com as identidades sociais ou empresariais existentes.

Protocolo

O atributo Nome do elemento Protocolo tem de 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" />
  ...

Afirmações de entrada

Os elementos InputClaims e InputClaimsTransformations não são necessários. Contudo, poderá querer enviar parâmetros adicionais para o seu fornecedor de identidade. O exemplo seguinte adiciona o parâmetro domain_hint cadeia de consulta com o valor de ao pedido de contoso.com autorização.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

Afirmações de saída

O elemento OutputClaims contém uma lista de afirmações devolvidas pelo fornecedor de identidade do OpenID Connect. Poderá ter de mapear o nome da afirmação definida na sua política para o nome definido no fornecedor de identidade. Também pode incluir afirmações que não são devolvidas pelo fornecedor de identidade, desde que defina o DefaultValue atributo.

O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation que são utilizados para modificar as afirmações de saída ou gerar novas.

O exemplo seguinte mostra as afirmações devolvidas pelo fornecedor de identidade da Conta Microsoft:

  • A sub-afirmação mapeada para a afirmação issuerUserId .
  • A afirmação de nome mapeada para a afirmação displayName .
  • O e-mail sem mapeamento de nomes.

O perfil técnico também devolve afirmações que não são devolvidas pelo fornecedor de identidade:

  • A afirmação identityProvider que contém o nome do fornecedor de identidade.
  • A afirmação authenticationSource com um valor predefinido 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 Descrição
client_id Yes O identificador da aplicação do fornecedor de identidade.
IdTokenAudience No O público do id_token. Se especificado, Azure AD B2C verifica se a aud afirmação num token devolvido pelo fornecedor de identidade é igual à especificada nos metadados IdTokenAudience.
METADADOS Yes Um URL que aponta para um documento de configuração do fornecedor de identidades do OpenID Connect, que também é conhecido como Ponto final de configuração bem conhecido do OpenID. O URL pode conter a {tenant} expressão, que é substituída pelo nome do inquilino.
authorization_endpoint No Um URL que aponta para um ponto final de autorização de configuração do fornecedor de identidades do OpenID Connect. O valor de authorization_endpoint metadados tem precedência sobre o authorization_endpoint especificado no ponto final de configuração bem conhecido do OpenID. O URL pode conter a {tenant} expressão, que é substituída pelo nome do inquilino.
end_session_endpoint No O URL do ponto final da sessão. O valor dos end_session_endpoint metadados tem precedência sobre o end_session_endpoint especificado no ponto final de configuração bem conhecido do OpenID.
issuer No O identificador exclusivo de um fornecedor de identidade do OpenID Connect. O valor dos metadados do emissor tem precedência sobre o issuer especificado no ponto final de configuração bem conhecido do OpenID. Se especificado, Azure AD B2C verifica se a iss afirmação num token devolvido pelo fornecedor de identidade é igual à especificada nos metadados do emissor.
ProviderName No O nome do fornecedor de identidade.
response_types No O tipo de resposta de acordo com a especificação OpenID Connect Core 1.0. Valores possíveis: id_token, codeou token.
response_mode No O método que o fornecedor de identidade utiliza para enviar o resultado de volta para Azure AD B2C. Valores possíveis: query, form_post (predefinição) ou fragment.
scope No O âmbito do pedido definido de acordo com a especificação OpenID Connect Core 1.0. openidComo , profilee email.
HttpBinding No O enlace HTTP esperado para os pontos finais do token de acesso e do token de afirmações. Valores possíveis: GET ou POST.
ValidTokenIssuerPrefixes No Uma chave que pode ser utilizada para iniciar sessão em cada um dos inquilinos ao utilizar um fornecedor de identidade multi-inquilino, como Microsoft Entra ID.
UsePolicyInRedirectUri No Indica se deve utilizar uma política ao construir o URI de redirecionamento. Quando configurar a aplicação no fornecedor de identidade, tem de especificar o URI de redirecionamento. O URI de redirecionamento aponta para Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Se especificar true, terá de adicionar um URI de redirecionamento para cada política que utilizar. Por exemplo: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx No Indica se um pedido para um serviço externo deve ser marcado como uma falha se o código de estado http estiver no intervalo 5xx. A predefinição é false.
DiscoverMetadataByTokenIssuer No Indica se os metadados OIDC devem ser detetados com o emissor no token JWT. Se precisar de criar o URL do ponto final de metadados com base no Emissor, defina-o como true.
IncludeClaimResolvingInClaimsHandling No Para afirmações de entrada e saída, especifica se a resolução de afirmações está incluída no perfil técnico. Valores possíveis: trueou false (predefinição). Se quiser utilizar uma resolução de afirmações no perfil técnico, defina esta opção como true.
token_endpoint_auth_method No Especifica como Azure AD B2C envia o cabeçalho de autenticação para o ponto final do token. Valores possíveis: client_secret_post (predefinição) e client_secret_basic, private_key_jwt. Para obter mais informações, consulte a secção Autenticação de cliente do OpenID Connect.
token_signing_algorithm No Especifica o algoritmo de assinatura a utilizar quando token_endpoint_auth_method estiver definido como private_key_jwt. Valores possíveis: RS256 (predefinição) ou RS512.
SingleLogoutEnabled No Indica se durante o início de sessão o perfil técnico tenta terminar sessão a partir de fornecedores de identidade federados. Para obter mais informações, veja Azure AD início de sessão B2C. Valores possíveis: true (predefinição) ou false.
ReadBodyClaimsOnIdpRedirect No Defina como para true ler afirmações do corpo de resposta no redirecionamento do fornecedor de identidade. Estes metadados são utilizados com o ID Apple, onde as afirmações devolvem 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 IU

As seguintes definições podem ser utilizadas para configurar a mensagem de erro apresentada após a falha. Os metadados devem ser configurados no perfil técnico do OpenID Connect. As mensagens de erro podem ser localizadas.

Atributo Necessário Descrição
UserMessageIfClaimsPrincipalDoesNotExist No A mensagem a apresentar ao utilizador se uma conta com o nome de utilizador fornecido não for encontrada no diretório.
UserMessageIfInvalidPassword No A mensagem a apresentar ao utilizador se a palavra-passe estiver incorreta.
UserMessageIfOldPasswordUsed No A mensagem a apresentar ao utilizador se for utilizada uma palavra-passe antiga.

Teclas criptográficas

O elemento CryptographicKeys contém o seguinte atributo:

Atributo Necessário Descrição
client_secret Yes O segredo do cliente da aplicação do fornecedor de identidade. Esta chave criptográfica só é necessária se os metadados de response_types estiverem definidos como code e token_endpoint_auth_method estiver definido como client_secret_post ou client_secret_basic. Neste caso, 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 pode omitir a chave criptográfica.
assertion_signing_key Yes A chave privada RSA que será utilizada para assinar a asserção do cliente. Esta chave criptográfica só é necessária se o token_endpoint_auth_method metadados estiver definido como private_key_jwt.

URI de Redirecionamento

Quando configurar o URI de redirecionamento do seu fornecedor de identidade, introduza https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Certifique-se de que substitui {your-tenant-name} pelo nome do inquilino. O URI de redirecionamento tem de estar em todas as minúsculas.

Exemplos: