Definición de un perfil técnico de OpenID Connect en una directiva personalizada de Azure Active Directory B2CDefine an OpenID Connect technical profile in an Azure Active Directory B2C custom policy

Nota

En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos.In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados.For most scenarios, we recommend that you use built-in user flows.

Azure Active Directory B2C (Azure AD B2C) ofrece compatibilidad con el proveedor de identidades del protocolo OpenID Connect.Azure Active Directory B2C (Azure AD B2C) provides support for the OpenID Connect protocol identity provider. OpenID Connect 1.0 define un nivel de identidad sobre OAuth 2.0 y representa la tecnología más avanzada en los protocolos de autenticación moderna.OpenID Connect 1.0 defines an identity layer on top of OAuth 2.0 and represents the state of the art in modern authentication protocols. Con un perfil técnico de OpenID Connect, puede realizar la federación con un proveedor de identidades basado en OpenID Connect, como Azure AD.With an OpenID Connect technical profile, you can federate with an OpenID Connect based identity provider, such as Azure AD. Esta federación permite a los usuarios iniciar sesión con sus identidades de redes sociales o de empresa existentes.Federating with an identity provider allows users to sign in with their existing social or enterprise identities.

ProtocoloProtocol

El atributo Name del elemento Protocol tiene que establecerse en OpenIdConnect.The Name attribute of the Protocol element needs to be set to OpenIdConnect. Por ejemplo, el protocolo del perfil técnico MSA-OIDC es OpenIdConnect:For example, the protocol for the MSA-OIDC technical profile is OpenIdConnect:

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

Notificaciones de entradaInput claims

Los elementos InputClaims y InputClaimsTransformations no son necesarios.The InputClaims and InputClaimsTransformations elements are not required. Pero puede que quiera enviar otros parámetros al proveedor de identidades.But you may want to send additional parameters to your identity provider. En el ejemplo siguiente se agrega el parámetro de cadena de consulta domain_hint con el valor de contoso.com a la solicitud de autorización.The following example adds the domain_hint query string parameter with the value of contoso.com to the authorization request.

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

Notificaciones de salidaOutput claims

El elemento OutputClaims contiene una lista de notificaciones proporcionada por el proveedor de identidades de OpenID Connect.The OutputClaims element contains a list of claims returned by the OpenID Connect identity provider. Puede que tenga que asignar el nombre de la notificación definida en la directiva al nombre definido en el proveedor de identidades.You may need to map the name of the claim defined in your policy to the name defined in the identity provider. También puede incluir notificaciones no especificadas por el proveedor de identidades, siempre que establezca el atributo DefaultValue.You can also include claims that aren't returned by the identity provider, as long as you set the DefaultValue attribute.

El elemento OutputClaimsTransformations puede contener una colección de elementos OutputClaimsTransformation que se usan para modificar las notificaciones de salida o para generar nuevas.The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

En el ejemplo siguiente, se muestran las notificaciones proporcionadas por el proveedor de identidades de cuentas Microsoft:The following example shows the claims returned by the Microsoft Account identity provider:

  • La notificación sub que se asigna a la notificación issuerUserId.The sub claim that is mapped to the issuerUserId claim.
  • La notificación name que se asigna a la notificación displayName.The name claim that is mapped to the displayName claim.
  • El correo electrónico sin asignación de nombre.The email without name mapping.

El perfil técnico también muestra la notificaciones no proporcionadas por el proveedor de identidades:The technical profile also returns claims that aren't returned by the identity provider:

  • La notificación identityProvider que contiene el nombre del proveedor de identidades.The identityProvider claim that contains the name of the identity provider.
  • La notificación authenticationSource con un valor predeterminado de socialIdpAuthentication.The authenticationSource claim with a default value of 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>

MetadatosMetadata

AtributoAttribute ObligatorioRequired DescripciónDescription
client_idclient_id Yes El identificador de la aplicación del proveedor de identidades.The application identifier of the identity provider.
IdTokenAudienceIdTokenAudience NoNo El público de id_token.The audience of the id_token. Si se especifica, Azure AD B2C comprueba si la notificación aud de un token proporcionada por el proveedor de identidades es igual a la especificada en los metadatos de IdTokenAudience.If specified, Azure AD B2C checks whether the aud claim in a token returned by the identity provider is equal to the one specified in the IdTokenAudience metadata.
METADATOSMETADATA Yes Una dirección URL que apunta a un documento de configuración del proveedor de identidades de OpenID Connect, que es un punto de conexión de configuración conocido de OpenID.A URL that points to an OpenID Connect identity provider configuration document, which is also known as OpenID well-known configuration endpoint. La dirección URL puede contener la expresión {tenant}, que se reemplaza por el nombre del inquilino.The URL can contain the {tenant} expression, which is replaced with the tenant name.
authorization_endpointauthorization_endpoint NoNo Una dirección URL que apunta a un punto de conexión de autorización de configuración del proveedor de identidades de OpenID Connect.A URL that points to an OpenID Connect identity provider configuration authorization endpoint. El valor de los metadatos de authorization_endpoint tiene prioridad sobre el elemento authorization_endpoint especificado en el punto de conexión de configuración conocido de OpenID.The value of authorization_endpoint metadata takes precedence over the authorization_endpoint specified in the OpenID well-known configuration endpoint. La dirección URL puede contener la expresión {tenant}, que se reemplaza por el nombre del inquilino.The URL can contain the {tenant} expression, which is replaced with the tenant name.
end_session_endpointend_session_endpoint NoNo Dirección URL del último punto de conexión de la sesión.The URL of the end session endpoint. El valor de los metadatos de authorization_endpoint tiene prioridad sobre el elemento end_session_endpoint especificado en el punto de conexión de configuración conocido de OpenID.The value of authorization_endpoint metadata takes precedence over the end_session_endpoint specified in the OpenID well-known configuration endpoint.
issuerissuer NoNo El identificador único de un proveedor de identidades de OpenID Connect.The unique identifier of an OpenID Connect identity provider. El valor de los metadatos de issuer tiene prioridad sobre el elemento issuer especificado en el punto de conexión de configuración conocido de OpenID.The value of issuer metadata takes precedence over the issuer specified in the OpenID well-known configuration endpoint. Si se especifica, Azure AD B2C comprueba si la notificación iss de un token proporcionada por el proveedor de identidades es igual a la especificada en los metadatos de issuer.If specified, Azure AD B2C checks whether the iss claim in a token returned by the identity provider is equal to the one specified in the issuer metadata.
ProviderNameProviderName NoNo Nombre del proveedor de identidades.The name of the identity provider.
response_typesresponse_types NoNo Tipo de respuesta según la especificación OpenID Connect Core 1.0.The response type according to the OpenID Connect Core 1.0 specification. Valores posibles: id_token, code o token.Possible values: id_token, code, or token.
response_moderesponse_mode NoNo Método que usará el proveedor de identidades para enviar de vuelta el resultado Azure AD B2C.The method that the identity provider uses to send the result back to Azure AD B2C. Valores posibles: query, form_post (predeterminado) o fragment.Possible values: query, form_post (default), or fragment.
scopescope NoNo Ámbito de la solicitud definida según la especificación OpenID Connect Core 1.0.The scope of the request that is defined according to the OpenID Connect Core 1.0 specification. Por ejemplo, openid, profile y email.Such as openid, profile, and email.
HttpBindingHttpBinding NoNo Enlace HTTP esperado al token de acceso y los puntos de conexión del token de notificaciones.The expected HTTP binding to the access token and claims token endpoints. Valores posibles: GET o POST.Possible values: GET or POST.
ValidTokenIssuerPrefixesValidTokenIssuerPrefixes NoNo Clave que puede usarse para iniciar sesión en todos los inquilinos al usar un proveedor de identidades multiinquilino, como Azure Active Directory.A key that can be used to sign in to each of the tenants when using a multi-tenant identity provider such as Azure Active Directory.
UsePolicyInRedirectUriUsePolicyInRedirectUri NoNo Indica si se usará una directiva al crear el URI de redireccionamiento.Indicates whether to use a policy when constructing the redirect URI. Al configurar la aplicación en el proveedor de identidades, necesita especificar el URI de redireccionamiento.When you configure your application in the identity provider, you need to specify the redirect URI. El URI de redireccionamiento apunta a Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp.The redirect URI points to Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Si especifica true, tendrá que agregar un URI de redireccionamiento por cada directiva que use.If you specify true, you need to add a redirect URI for each policy you use. Por ejemplo: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.For example: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xxMarkAsFailureOnStatusCode5xx NoNo Indica si una solicitud a un servicio externo tiene que marcarse como un error si el código de estado HTTP se encuentra en el intervalo 5xx.Indicates whether a request to an external service should be marked as a failure if the Http status code is in the 5xx range. El valor predeterminado es false.The default is false.
DiscoverMetadataByTokenIssuerDiscoverMetadataByTokenIssuer NoNo Indica si los metadatos de OIDC tienen que detectarse con el emisor en el token JWT.Indicates whether the OIDC metadata should be discovered by using the issuer in the JWT token.
IncludeClaimResolvingInClaimsHandlingIncludeClaimResolvingInClaimsHandling NoNo En el caso de las notificaciones de entrada y salida, especifica si se incluye la resolución de notificaciones en el perfil técnico.For input and output claims, specifies whether claims resolution is included in the technical profile. Valores posibles: true o false (valor predeterminado).Possible values: true, or false (default). Si desea utilizar un solucionador de notificaciones en el perfil técnico, establézcalo en true.If you want to use a claims resolver in the technical profile, set this to true.
token_endpoint_auth_methodtoken_endpoint_auth_method NoNo Especifica cómo Azure AD B2C envía el encabezado de autenticación al punto de conexión del token.Specifies how Azure AD B2C sends the authentication header to the token endpoint. Valores posibles: client_secret_post (valor predeterminado) y client_secret_basic (versión preliminar pública).Possible values: client_secret_post (default), and client_secret_basic (public preview). Para obtener más información, consulte la sección Autenticación de cliente de OpenID Connect.For more information, see OpenID Connect client authentication section.
token_signing_algorithmtoken_signing_algorithm NoNo Algoritmo de firma utilizado para las aserciones de cliente cuando los metadatos de token_endpoint_auth_method se establecen en private_key_jwt.The signing algorithm used for client assertions when the token_endpoint_auth_method metadata is set to private_key_jwt. Valores posibles: RS256 (predeterminado).Possible values: RS256 (default).
SingleLogoutEnabledSingleLogoutEnabled NoNo Indica si, durante el inicio de sesión, el perfil técnico intenta cerrar sesión desde los proveedores de identidades federados.Indicates whether during sign-in the technical profile attempts to sign out from federated identity providers. Para obtener más información, consulte Cierre de sesión de Azure AD B2C. Valores posibles: true (opción predeterminada) o false.For more information, see Azure AD B2C session sign-out. Possible values: true (default), or false.
ReadBodyClaimsOnIdpRedirectReadBodyClaimsOnIdpRedirect NoNo Establézcalo en true para leer notificaciones del cuerpo de la respuesta en la redirección del proveedor de identidades.Set to true to read claims from response body on identity provider redirect. Estos metadatos se usan con el identificador de Apple, donde las notificaciones devuelven la carga de respuesta.This metadata is used with Apple ID, where claims return in the response payload.
<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 de interfaz de usuarioUI elements

La configuración siguiente se puede usar para establecer el mensaje de error que se muestra cuando se produce un error.The following settings can be used to configure the error message displayed upon failure. Los metadatos se deben configurar en el perfil técnico de OpenID Connect.The metadata should be configured in the OpenID Connect technical profile. Los mensajes de error se pueden localizar.The error messages can be localized.

AtributoAttribute ObligatorioRequired DescripciónDescription
UserMessageIfClaimsPrincipalDoesNotExistUserMessageIfClaimsPrincipalDoesNotExist NoNo Mensaje que se mostrará al usuario si una cuenta con el nombre de usuario proporcionado no está en el directorioThe message to display to the user if an account with the provided username not found in the directory.
UserMessageIfInvalidPasswordUserMessageIfInvalidPassword NoNo Mensaje que se mostrará al usuario si la contraseña es incorrectaThe message to display to the user if the password is incorrect.
UserMessageIfOldPasswordUsedUserMessageIfOldPasswordUsed NoNo Mensaje que se mostrará al usuario si se usa una contraseña antiguaThe message to display to the user if an old password used.

Claves de cifradoCryptographic keys

El elemento CryptographicKeys contiene el atributo siguiente:The CryptographicKeys element contains the following attribute:

AtributoAttribute ObligatorioRequired DescripciónDescription
client_secretclient_secret Yes Secreto de cliente de la aplicación del proveedor de identidades.The client secret of the identity provider application. La clave criptográfica es necesaria solo si los metadatos de response_types se establecen en code y token_endpoint_auth_method se establece en client_secret_post o client_secret_basic.This cryptographic key is required only if the response_types metadata is set to code and token_endpoint_auth_method is set to client_secret_post or client_secret_basic. En este caso, Azure AD B2C realiza otra llamada para cambiar el código de autorización por un token de acceso.In this case, Azure AD B2C makes another call to exchange the authorization code for an access token. Si los metadatos se establecen en id_token, puede omitir la clave criptográfica.If the metadata is set to id_token you can omit the cryptographic key.
assertion_signing_keyassertion_signing_key Yes Clave privada RSA que se utilizará para firmar la aserción del cliente.The RSA private key which will be used to sign the client assertion. Esta clave criptográfica solo es necesaria si los metadatos de token_endpoint_auth_method se establecen en private_key_jwt.This cryptographic key is required only if the token_endpoint_auth_method metadata is set to private_key_jwt.

URI de redireccionamientoRedirect Uri

Al configurar el URI de redireccionamiento del proveedor de identidades, escriba https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp.When you configure the redirect URI of your identity provider, enter https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Asegúrese de reemplazar {your-tenant-name} por el nombre del inquilino.Make sure to replace {your-tenant-name} with your tenant's name. El URI de redireccionamiento necesita estar escrito todo en minúsculas.The redirect URI needs to be in all lowercase.

Ejemplos:Examples: