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 , code ou 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.
openid Como , profile e 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: true ou 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: