Saltar al contenido principal
Las conexiones empresariales que usan OpenID Connect u Okta Workforce como pueden admitir PKCE, además del mapeo de atributos y tokens.

Configurar PKCE para conexiones OIDC

Connect y las conexiones de Okta Workforce se configuran automáticamente para admitir Proof Key for Code Exchange (PKCE). Si su Proveedor de identidad (IdP) de OIDC admite PKCE mediante metadatos de descubrimiento de OIDC, Auth0 usará de forma predeterminada el algoritmo más robusto disponible. Para obtener más información sobre los metadatos de descubrimiento de OIDC, consulte la documentación de OpenID.

Ver la configuración de PKCE de una conexión

Puede ver la configuración de PKCE de una conexión específica en el :
  1. Vaya a Authentication > Enterprise y elija su proveedor de OIDC (OpenID Connect u Okta Workforce).
  2. Seleccione la pestaña Settings.
  3. En la sección General, ubique el campo Connection Profile.
Puede administrar la configuración de PKCE de una conexión desde el Auth0 Dashboard:
  1. Vaya a Dashboard > Authenticate >Enterprise y elija su proveedor de OIDC (OpenID Connect u Okta Workforce).
  2. Seleccione la pestaña Settings y ubique el campo Connection Profile.
  3. Establezca la propiedad pkce en uno de los valores admitidos que se indican a continuación.
  4. Seleccione Save.

Valores de configuración de PKCE compatibles

Auth0 admite los siguientes valores para la configuración de PKCE:
ValorDescripción
autoValor predeterminado. Usa el algoritmo más robusto disponible.
s256Usa el algoritmo SHA-256. Actualmente, Auth0 no admite tokens RS512.
plainUsa texto sin formato, como se describe en la especificación de PKCE.
disabledDeshabilita la compatibilidad con PKCE.
Establecer la propiedad pkce en un valor distinto de auto puede impedir que una conexión funcione correctamente si el valor seleccionado no es compatible con el Proveedor de identidad.No establezca la propiedad en disabled salvo para solucionar problemas de autenticación.
Limitación de Microsoft Entra IDSi usa una conexión de OpenID Connect para Microsoft Entra ID, debe establecer pkce en s256, ya que los metadatos de la conexión no exponen el algoritmo de hash utilizado. Actualmente, la conexión empresarial de Microsoft Entra ID no admite PKCE.

Asignar claims para conexiones OIDC

Las conexiones de OpenID Connect y Okta Workforce pueden asignar automáticamente los claims recibidos del proveedor de identidad (IdP). Puede configurar este mapeo mediante una plantilla de biblioteca proporcionada por Auth0 o introduciendo directamente su propia plantilla.
Los claims asignados no se agregan automáticamente a un token de ID de Auth0. Para agregar claims a un token de ID, consulte Crear claims personalizados.

Propiedades de la plantilla de mapeo

Las plantillas de mapeo admiten las propiedades del objeto options.attribute_map que se enumeran a continuación. Las plantillas deben estar en formato JSON con pares clave/valor válidos.
Propiedad¿Obligatorio?Descripción
mapping_modeObligatorioMétodo que se usa para mapear las claims entrantes.
userinfo_scopeOpcionalAlcances que se solicitan al IdP durante la autorización y que determinan qué claims están disponibles en el endpoint de UserInfo.
attributesObligatorioObjeto que contiene los detalles de mapeo de las claims entrantes.

Modo de mapeo

La propiedad mapping_mode define el método que se usa para asignar las claims entrantes del IdP al perfil del usuario de Auth0. mapping_mode admite los siguientes valores:
ValorDescripción
use_mapUsa la plantilla proporcionada para asignar los datos.
bind_allCopia todos los elementos de datos proporcionados por el IdP.

Claims restringidos

Auth0 reserva algunos claims para su propio uso; esos claims no pueden utilizarse como claves de atributos en los perfiles de usuario. Si establece la propiedad mapping_mode en bind_all, es posible que su IdP intente asignar valores a uno o varios de estos claims restringidos. Aunque esto no impide que los usuarios se autentiquen en su conexión, los valores asociados a claims restringidos no se asignan al perfil de usuario de Auth0. Si establece mapping_mode en use_map, puede asignar el claim restringido entrante a uno válido:
"attribute_map": {
        "mapping_mode": "use_map",
        "attributes": {
            "amr": "{context.tokenset.amr}", // `amr` es un claim restringido y no será mapeado
            "federated_amr": "{context.tokenset.amr}" // `federated_amr` no es un claim restringido y será mapeado
        }
    }
Para ver una lista completa de los claims restringidos, consulte Crear claims personalizados.

Alcance de UserInfo

La propiedad userinfo_scope define los alcances que Auth0 incluye en la solicitud de autorización al IdP. Estos alcances determinan qué claims pone a disposición el IdP en su endpoint UserInfo. Cuando el mapa de atributos hace referencia a context.userinfo properties, Auth0 llama al endpoint UserInfo del IdP utilizando el token de acceso concedido con estos alcances. Por ejemplo, si quiere solicitar los alcances estándar de OIDC y el scope groups para que los claims de grupo estén disponibles en el endpoint UserInfo, puede configurarlo de la siguiente manera:
"attribute_map": {
    "mapping_mode": "use_map",
    "userinfo_scope": "openid email profile groups",
    "attributes": {
        "name": "${context.tokenset.name}",
        "groups": "${context.userinfo.groups}"
    }
}

Atributos

La propiedad attributes es un objeto que contiene información de mapeo que permite a Auth0 interpretar las claims entrantes del IdP. La información de mapeo debe proporcionarse como pares clave/valor. La clave de la izquierda corresponde a un atributo del perfil de usuario de Auth0. El valor de la derecha representa la claim entrante del IdP, que puede expresarse como un valor literal, un objeto de contexto dinámico o una combinación de ambos. Los objetos de contexto dinámico son expresiones de plantilla escritas en el formato habitual ${variable}.
"attribute_map": {
    . . .
    "attributes": {
        "name": "${context.tokenset.name}",
        "email": "${context.tokenset.email}",
        "username": "${context.tokenset.preferred_username}"
    }
}

Valores literales

Un valor literal es un valor estático asignado a un atributo de perfil específico para todos los usuarios de la conexión. Por ejemplo, si está configurando una conexión OIDC de SalesForce y quiere asignar el mismo ID de comunidad de SFDC a todos los perfiles de usuario, puede hacerlo de la siguiente manera:
"attribute_map": {
    . . .
    "attributes": {

        "sf_community_id": "3423409219032-32"
    }
}

Objeto de contexto

Puede asignar valores dinámicos a los atributos del perfil del usuario mediante el objeto context. Esto le permite almacenar valores únicos para perfiles individuales, en lugar de valores literales que permanecen estáticos en todos los perfiles. El objeto context admite las siguientes propiedades:
PropiedadDescripción
context.connectionContiene las siguientes propiedades:

  • id: El identificador único de la conexión (por ejemplo, con_4423423423432423).

  • strategy: La estrategia de la conexión (por ejemplo, oidc).
  • context.tokensetContiene las siguientes propiedades:

  • access_token: El token de acceso validado completo enviado por el IdP.

  • <claim name>: Cualquier claim del token de ID enviado por el IdP.
  • context.userinfoContiene las siguientes propiedades:

  • <claim name>: Cualquier claim disponible proporcionado por el endpoint UserInfo del IdP.
  • Ejemplos

    Asignación simple de claims de usuario

    En este ejemplo se muestra cómo asignar claims de usuario comunes al perfil de usuario de Auth0 con datos del :
    "attribute_map": {
        . . .
        "attributes": {
            "name": "${context.tokenset.name}",
            "email": "${context.tokenset.email}",
            "username": "${context.tokenset.preferred_username}"
        }
    }
    

    Asignación de claims de grupos

    Este ejemplo muestra cómo asignar grupos al perfil de usuario de Auth0 desde el IdP de origen:
    "attribute_map": {
        . . .
        "attributes": {
            "federated_groups": "${context.userinfo.groups}",
            "federated_locale": "${context.userinfo.locale}",
            "federated_zoneinfo": "${context.userinfo.zoneinfo}"
        }
    }
    

    Combinar valores literales y objetos de contexto

    Este ejemplo muestra cómo combinar valores literales y expresiones de plantilla dinámicas para asignar un valor complejo a un atributo del perfil del usuario de Auth0:
    "attribute_map":{
        . . .
        "attributes": {
            "alt_id": "user_email|${context.tokenset.email}",
            . . .
        }
    }