Uso de OpenID Connect to Extend OAuth 2.0

OpenID Connect amplía el protocolo OAuth 2.0 para agregar una capa de identidad y autenticación sencilla que se encuentra sobre OAuth 2.0.

Utilice OpenID Connect cuando desee que las aplicaciones basadas en la nube obtengan información de identidad, recuperen detalles sobre el evento de autenticación (por ejemplo, cuándo, dónde y cómo se ha producido la autenticación) y permitan la conexión única federada (SSO).

OAuth 2.0 proporciona tokens de seguridad para su uso al llamar a recursos de backend en nombre de un usuario. OAuth proporciona a una concesión o licencia la capacidad de acceder a los recursos en lugar de proporcionar información sobre la autenticación en sí. El uso de OAuth para la autenticación es como un administrador de apartamentos que da a alguien que quiere conocer su identidad una clave temporal para su apartamento. La clave solo implica un derecho a entrar en el apartamento por un período de tiempo específico. No implica que el individuo sea el propietario.

Con OpenID Connect se completa la imagen proporcionando a las aplicaciones información sobre el usuario, el contexto de su autenticación y el acceso a la información de su perfil. OpenID Connect permite a los clientes de todo tipo, incluidos los clientes basados en web, móviles y JavaScript, solicitar y recibir información sobre sesiones autenticadas y usuarios finales. Consulte OpenID Connect para obtener más información.

Se presentan dos conceptos:
  • Token de ID de conexión OpenID: este token contiene información sobre la sesión autenticada del usuario.

  • Punto final UserInfo: este punto final proporciona una forma para que el cliente recupere atributos adicionales sobre el usuario.

Implementación de OpenID Connect

Hay tres acciones principales necesarias para implantar OpenID Connect:

  1. Obtener un token de ID de conexión OpenID: utilice un tipo de permiso OAuth2 para solicitar un token de ID de conexión OpenID mediante la inclusión del ámbito openid en la solicitud de autorización.

    Los siguientes casos de uso proporcionan solicitudes y respuestas de ejemplo para obtener el token de ID.

  2. Validar el token de ID: Valide el token de ID para asegurarse de que se originó a partir de un emisor de confianza y de que el contenido no se alteró durante el transporte.

    El siguiente caso de uso proporciona información sobre cómo y qué validar.

  3. Recuperar información de perfil del punto final UserInfo: mediante el token de acceso OAuth2, acceda al punto final UserInfo para recuperar información de perfil sobre el usuario autenticado.

    El siguiente caso de uso proporciona solicitudes y respuestas de ejemplo para recuperar información de perfil del punto final UserInfo.

Elemento de Identidad

Un token de identidad es un token independiente y protegido por la integridad (en formato de token web JSON (JWT) que se define en el estándar OpenID Connect que contiene reclamaciones sobre el usuario final. El token de identidad es la extensión principal que OpenID Connect realiza en OAuth 2.0 para activar la autenticación en un dominio de identidad.

El token de identidad JWT consta de tres componentes, una cabecera, una carga útil y la firma digital. Siguiendo el estándar JWT, estas tres secciones están codificadas y separadas por puntos Base64URL.

Nota

Las solicitudes de conexión OpenID deben contener el valor de ámbito openid.

OpenID Connect 1.0 es una capa de identidad simple sobre el protocolo OAuth 2.0. Permite a una aplicación cliente de dominio de identidad de IAM (registrada como cliente OAuth 2 con ID de cliente y secreto de cliente) verificar la identidad del usuario final según la autenticación realizada por un servidor de autorización (AS) y obtener información de perfil básica sobre el usuario final de una manera interoperable y similar a REST. OpenID Connect permite a los clientes de todo tipo, incluidos los clientes basados en web, móviles y JavaScript, solicitar y recibir información sobre sesiones autenticadas y usuarios finales. Consulte OpenID Connect para obtener más información.

Nombre Valor
amr Referencias de métodos de autenticación. Matriz JSON de cadenas que son identificadores para los métodos de autenticación utilizados en la autenticación. Por ejemplo, los valores pueden indicar que se utilizaron métodos de autenticación de OTP y contraseña.
at_hash Valor hash de token de acceso OAuth 2.
aud Identifica los destinatarios a los que está destinado este token de ID. Debe ser OAuth 2.0 client_id (según la especificación OpenID Connect). Este es el nombre de cliente OAuth (app.name) que realiza la solicitud. Aud también contiene el emisor del dominio de identidad de IAM, lo que convierte el tipo de token (IT) en una afirmación de usuario del dominio de identidad de IAM.
authn_strength* Valor devuelto por SSO de la nube que indica la intensidad de autenticación del contexto AuthN.
auth_time Tiempo (tiempo de UNIX) en el que SSO de la nube autenticó realmente al usuario (en segundos, procedente del contexto AuthN).
azp Parte autorizada. Parte a la que se emitió el token de ID. Si está presente, DEBE contener el ID de cliente OAuth 2.0 de esta parte. Esta reclamación solo es necesaria cuando el token de ID tiene un valor de público único y ese público es diferente de la parte autorizada. Puede incluirse incluso cuando la parte autorizada sea la misma que la única audiencia. El valor azp es una cadena sensible a mayúsculas y minúsculas que contiene un valor StringOrURI.
exp La hora de caducidad (hora de UNIX epoch) en o después de la cual no se debe aceptar el token de ID para su procesamiento. Este valor debe ser igual que session_exp.
iat Tiempo (tiempo de UNIX) en que se creó el JWT (en segundos). UNIX Epoch Time es un número JSON que representa el número de segundos desde 1970-01-01T0:0:0Z, medido en Coordinated Universal Time (UTC) hasta la fecha/hora.
iss Principal que ha emitido el token: https://<domainURL>
jti Identificador único generado por el servidor para el ID de JWT.
nonce Valor de cadena utilizado para asociar una sesión de cliente a un token de ID y para mitigar ataques de reproducción. Este valor lo proporciona Cloud Gate.
session_exp* Hora (tiempo de UNIX) a la que caduca la sesión de SSO en la nube (segundos, debe ser la misma caducidad de la sesión de SSO en el contexto AuthN).
sid ID de sesión de SSO en la nube (255 caracteres ASCII máximos) del contexto AuthN.
sub Identifica al usuario. El identificador de asunto es localmente único, nunca se reasigna y está destinado a ser utilizado por el cliente: ID de inicio de sesión de usuario (255 caracteres ASCII máximos). ID de conexión del usuario del contexto AuthN.
sub_mappingattr* Atributo utilizado para buscar el subalmacén de ID.
tok_type* Identifica el tipo de token: IT
user_displayname* Nombre mostrado de usuario (255 caracteres ASCII máximos) del contexto AuthN.
user_csr* Indica (true) que el usuario es un representante del servicio de atención al cliente (CSR).
user_id* GUID de dominio de identidad de IAM del usuario desde el contexto AuthN.
user_lang* Idioma preferido del usuario.
user_locale* Configuración regional del usuario.
user_tenantname* Nombre de inquilino de usuario (255 caracteres ASCII como máximo). El GUID del inquilino no se guarda específicamente en el token
user_tz* Zona horaria del usuario.

Validación de token de identidad

¿Por qué validamos los tokens? Cuando la aplicación web comprueba las credenciales directamente, verifica que el nombre de usuario y la contraseña que se presentan corresponden con lo que mantiene. Al utilizar la identidad basada en reclamaciones, subcontrata ese trabajo a un proveedor de identidad.

La responsabilidad pasa de verificar las credenciales raw a verificar que el solicitante ha pasado por el proveedor de identidad preferido y se ha autenticado correctamente. El proveedor de identidad representa una autenticación correcta mediante la emisión de un token. Para poder utilizar la información o confiar en ella como una afirmación que el usuario ha autenticado, debe validarla.

OpenID Documento de detección

El protocolo OpenID Connect 1.0 es una capa de identidad simple sobre el protocolo OAuth 2.0 que requiere el uso de varios puntos finales para autenticar usuarios y para solicitar recursos que incluyen información de usuario, tokens y claves públicas. Para ayudar a detectar cuáles son estos puntos finales que debe utilizar, OpenID Connect le permite utilizar un documento de detección, que es un documento JSON que se encuentra en una ubicación conocida. Este documento de detección contiene pares de clave/valor que proporcionan detalles sobre la configuración del proveedor de Connect OpenID, incluidos los URI de los puntos finales de autorización, token, userinfo y claves públicas. Puede recuperar el documento de detección para el servicio de conexión OpenID del dominio de identidad de IAM desde: https://<domainURL>/.well-known/openid-configuration.

Validación de tokens de identidad

Un token de identidad (ID) es un token autónomo protegido por la integridad (en formato de token web JSON) que contiene reclamaciones sobre el usuario final. Representa la sesión de un usuario autenticado. Por lo tanto, el token se debe validar antes de que una aplicación pueda confiar en el contenido del token de ID. Por ejemplo, si un atacante malicioso reprodujo el token de ID de un usuario que había capturado anteriormente, la aplicación debería detectar que el token se ha reproducido o se ha utilizado después de que haya caducado y denegar la autenticación.

El token de ID se define en el estándar OpenID Connect y es la extensión principal que OpenID Connect realiza a OAuth 2.0 para activar la autenticación. Los tokens de ID son confidenciales y se pueden utilizar incorrectamente si se interceptan. Asegúrese de que estos tokens se manejen de forma segura transmitiéndolos solo a través de HTTPS y solo utilizando datos POST o dentro de cabeceras de solicitud. Si los almacena en su servidor, también debe almacenarlos de forma segura.
  1. Verifique que el valor de la reclamación de público (aud) contiene el valor client_id de la aplicación. La reclamación aud (audiencia) puede contener una matriz con más de un elemento. El token de ID debe rechazarse si el token de ID no muestra al cliente como un público válido o si contiene públicos adicionales en los que el cliente no confía.

  2. Compruebe que la hora actual es anterior a la hora representada por la reclamación de tiempo de caducidad (exp).

  3. Verifique que el emisor haya firmado correctamente el token de ID. Los tokens emitidos por el dominio de identidad se firman mediante uno de los certificados encontrados en el URI especificado en el campo jwks_uri del documento de detección.
    • Recupere el certificado público del inquilino del punto final SigningCert/jwk (por ejemplo, https://acme.identity.oraclecloud.com/admin/v1/SigningCert/jwk).

      Nota

      Dado que los dominios de identidad cambian las claves públicas con poca frecuencia, puede almacenar en caché las claves públicas y, en la gran mayoría de los casos, realizar de forma eficaz la validación local. Esto requiere recuperar y analizar certificados y realizar las llamadas criptográficas adecuadas para comprobar la firma:
    • Utilice las bibliotecas de JWT disponibles para validar, por ejemplo, la biblioteca Nimbus JWT de Connect2id para Java. Consulte JWT para obtener una lista de las bibliotecas disponibles.

      Nota

      En caso de fallo de validación de firma, para evitar recuperaciones constantes en caso de ataques con tokens falsos, la recuperación/realmacenamiento en caché de la clave pública se debe basar en un intervalo de tiempo, como 60 minutos, para que las recuperaciones solo se produzcan cada 60 minutos.

    Ejemplo

    package sample;
     
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import com.nimbusds.jose.JWSAlgorithm;
    import com.nimbusds.jose.jwk.source.JWKSource;
    import com.nimbusds.jose.jwk.source.RemoteJWKSet;
    import com.nimbusds.jose.proc.JWSKeySelector;
    import com.nimbusds.jose.proc.JWSVerificationKeySelector;
    import com.nimbusds.jose.proc.SecurityContext;
    import com.nimbusds.jwt.JWTClaimsSet;
    import com.nimbusds.jwt.proc.ConfigurableJWTProcessor;
    import com.nimbusds.jwt.proc.DefaultJWTProcessor;
     
    public class TokenValidation {
     
        public static void main(String[] args) {
            try {
                String tokenValue = "eyJ4NXQjUzI1....W9J4oQ";
         
                ConfigurableJWTProcessor jwtProcessor = new DefaultJWTProcessor();
     
                // change t
                JWKSource keySource = new RemoteJWKSet(new URL("https://<domainURL>/admin/v1/SigningCert/jwk"));
     
                // The expected JWS algorithm of the token (agreed out-of-band)
                JWSAlgorithm expectedJWSAlg = JWSAlgorithm.RS256;
     
                // Configure the JWT processor with a key selector to feed matching public
                // RSA keys sourced from the JWK set URL
                JWSKeySelector keySelector = new JWSVerificationKeySelector(expectedJWSAlg, keySource);
                jwtProcessor.setJWSKeySelector(keySelector);
     
                // Process the token
                SecurityContext ctx = null; // optional context parameter, not required here
                JWTClaimsSet claimsSet = jwtProcessor.process(tokenValue, ctx);
                // Print out the token claims set
                System.out.println(claimsSet.toJSONObject());
                 
     
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
    }
  4. Verifique que el valor de la reclamación del identificador de emisor (iss) coincida exactamente con el valor de la reclamación de iss (emisor): https://<domainURL>/

Consulta del punto final UserInfo

Una aplicación utiliza el punto final UserInfo de OpenID Connect para recuperar información de perfil sobre la identidad autenticada. Las aplicaciones pueden utilizar este punto final para recuperar información de perfil, preferencias y otra información específica del usuario.

El perfil de conexión OpenID consta de dos componentes:

  • Reclamaciones que describen al usuario

  • Punto final UserInfo que proporciona un mecanismo para recuperar estas reclamaciones
    Nota

    Las reclamaciones de usuario también se pueden presentar dentro del token de ID para eliminar una devolución de llamada durante el tiempo de autenticación.

Reclamaciones de perfil de usuario

El punto final UserInfo proporciona un juego de reclamaciones basado en los ámbitos OAuth2 presentados en la solicitud de autenticación. OpenID Connect define cinco valores de ámbito que se asignan a un juego específico de reclamaciones por defecto:

OpenID Ámbito de conexión Reclamaciones devueltas

openid

Ninguno: indica que se trata de una solicitud de conexión OpenID

Perfil

nombre, family_name, given_name, middle_name, apodo, preferred_username, perfil, imagen, sitio web, género, fecha de nacimiento, zoneinfo, configuración regional, updated_at

Dirección

Dirección

Correo Electrónico

correo electrónico, email_verified

teléfono

phone_number, phone_number_verified

El cliente debe presentar sus credenciales y un token de acceso. El token de acceso presentado debe contener el ámbito openid.

Si se omite un ámbito (por ejemplo, el ámbito email no se utiliza), la reclamación (email) no estará presente en las reclamaciones devueltas.

Ejemplo de solicitud de punto final UserInfo

Después de que la aplicación cliente haya autenticado un usuario y tenga el token de acceso, el cliente puede realizar una solicitud al punto final UserInfo para recuperar los atributos solicitados sobre un usuario. El siguiente ejemplo muestra un ejemplo de solicitud.

   curl -i
   -H 'Content-Type: application/x-www-form-urlencoded'
   -H 'Authorization: Bearer eyJ4NXQjUzI1....rtApFw'-H 'Accept: */*'
   -H 'Content_Language: en-US'--request GET https://<domainURL>/oauth2/v1/userinfo

Ejemplo de respuesta

Una respuesta correcta devuelve una respuesta HTTP 200 OK y las reclamaciones del usuario en formato JSON:

{
"birthdate":"",
"email":"user@example.com",
"email_verified":false,
"family_name":"user",
"gender":"",
"given_name":"user",
"appRoles":[],
"name":"alice alice",
"preferred_username":"user@example.com",
"sub":"user@example.com",
"updated_at":1495136783,"website":""
}

Para que la aplicación cliente pueda confiar en los valores devueltos del punto final UserInfo (por ejemplo, como ataque de comprobación de sustitución de token), el cliente debe verificar que la reclamación sub devuelta por la solicitud de punto final UserInfo coincida con el asunto del token de ID.

Uso del flujo de código de autorización con OpenID Connect

Utilice el flujo Código de autorización cuando tenga clientes que puedan mantener de forma segura un secreto de cliente entre ellos y el servidor de autorización. El flujo Código de autorización devuelve un Código de autorización al cliente, que puede intercambiar el código por un token de ID y un token de acceso directamente.

Esto le proporciona la ventaja de no exponer ningún token al agente de usuario (como un explorador web) y posiblemente a otras aplicaciones maliciosas con acceso al agente de usuario. El servidor de autorización también puede autenticar el cliente antes de intercambiar el código de autorización por un token de acceso. El flujo Código de autorización funciona tanto con clientes confidenciales como con clientes públicos.

Clientes Confidenciales

El flujo Código de autorización consta de dos pasos:
  1. Solicite el código de autorización. En esta solicitud, el valor del parámetro de ámbito es openid. Este es un valor de especificación de Connect OpenID.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/authorize?client_id=<client-id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid

    Ejemplo de respuesta

    https://<domainURL>/?code=AQIDBAXv9lZQ....F9NCA=
    • Puede proporcionar valores de ámbito adicionales en las solicitudes, por ejemplo:

      https://<domainURL>/oauth2/v1/authorize?client_id=<client-id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=phone+openid+offline_access+profile+address+email
      
    • Esta solicitud contiene el ámbito de recurso openid y OAuth:

      https://<domainURL>/oauth2/v1/authorize?client_id=<client-id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=http://<domainURL>/api+openid
  2. Solicite el token. El cliente extrae el parámetro de código de la respuesta y realiza la solicitud de token. Además, el cliente proporciona su ID de cliente y su secreto como parte de la cabecera de autenticación básica.

    Ejemplo de solicitud

       curl -i
       -H 'Authorization: Basic ZWE1OGIwNDA0N2ZkNGQ4MTgyYThiYWQ0ZTNkMGFmZjU6ZGMxNGE4MjMtZGU2OC00YWNhLTg1OWUtMWNhZTJmNjQ0NTBi' 
       -H 'Accept: */*'
       --request POST 'https://<domainURL>/oauth2/v1/token' -d 'grant_type=authorization_code&code=AQIDBAXv9lZQ???.jF9NCA'

    Ejemplo de respuesta

    La solicitud contiene tanto el token de acceso como el token de ID.

    {
    "access_token":"eyJ4NXQjUzI1???.xhtnbw",
    "token_type":"Bearer",
    "expires_in":27261,
    "id_token":"eyJ4NXQjUzI1???.._XLqUw"
    }

Clientes Públicos

Los clientes públicos no tienen credenciales, sino un identificador de cliente. Hay dos pasos en el flujo Código de autorización. Las solicitudes implican una solicitud GET basada en explorador y, a continuación, una solicitud POST de canal secundario para obtener el token de acceso.

  1. Solicite el código de autorización.

    Ejemplo de solicitud

    GET https://<domainURL>/oauth2/v1/authorize?client_id=<client-id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234

    Ejemplo de respuesta

    Nota

    Estos ejemplos de solicitud y respuesta son similares a las respuestas y solicitudes del cliente confidencial tratadas anteriormente.
    https://<domainURL>/?code=AQIDBAXv9lZQ....F9NCA=
  2. Solicite el token.

    Ejemplo de solicitud

    Nota

    Esta solicitud es diferente de la solicitud de cliente confidencial, donde el ID de cliente y el secreto de cliente se especifican en la cabecera Autenticación básica. En el flujo de cliente público, no hay ninguna cabecera de autenticación básica. El ID de cliente se especifica como parte de la carga útil de la solicitud.
       curl -i
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'   
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=authorization_code&code=<authz-code>&reidrect_uri=<client-redirect-uri>&client_id=<client-id>'

    Ejemplo de respuesta

    {
    "access_token":"eyJ4NXQjUzI1???.xhtnbw",
    "token_type":"Bearer",
    "expires_in":27261,
    "id_token":"eyJ4NXQjUzI1???.._XLqUw"
    }
    

Uso del flujo implícito con OpenID Connect

Utilice el flujo implícito cuando haya implantado un cliente basado en explorador mediante un lenguaje de script como JavaScript. El token de acceso y el token de ID se devuelven directamente al cliente, lo que puede exponer estos tokens al usuario y a las aplicaciones que tienen acceso al agente de usuario del usuario (como un explorador web).

No hay ninguna solicitud de token programático/de canal secundario implicada en este flujo (como la solicitud de cliente público en el ejemplo de flujo de código de autorización). Todos los tokens se devuelven desde el punto final Authorization y el punto final token no se utiliza. El flujo implícito funciona con clientes públicos, de confianza y confidenciales.
Nota

Los clientes públicos no tienen credenciales, solo un identificador de cliente.

Los siguientes valores response_type están soportados con el flujo implícito:

  • id_token (token de ID)

  • token (token de acceso)

  • id_token token (el token de ID y el token de acceso)

Obtención de un token de ID

Hay tres pasos en el flujo implícito para obtener un token de ID:
  1. Solicite el token.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=id_token&redirect_uri=<client_redirect_uri>&scope=address+openid+profile&nonce=abcdefg
  2. El usuario se conecta y da su consentimiento (en función de los ámbitos solicitados)

  3. Respuesta con token de ID

    Ejemplo de respuesta

    Nota

    Todos los parámetros de respuesta se agregan al componente de fragmento del URI de redirección.
    https://<domainURL>/#id_token=eyJ4NXQjUzI1.....gF5uyQ

Obtención de un token de acceso

Hay tres pasos en el flujo implícito para obtener un token de acceso:

  1. Solicite el token de acceso.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=token&redirect_uri=<client_redirect_uri>&scope=address+openid+profile
  2. El usuario se conecta y da su consentimiento (según los ámbitos solicitados).

  3. Respuesta con token de acceso

    Ejemplo de respuesta

    Nota

    Todos los parámetros de respuesta se agregan al componente de fragmento del URI de redirección.
    https://<domainURL>/#access_token=eyJ4NXQjUzI1...4WGvJQ&token_type=Bearer&expires_in=3600

Obtención de un token de ID y un token de acceso

Hay tres pasos en el flujo implícito para obtener tanto el token de ID como el token de acceso:
  1. Solicite el token de ID y el token de acceso.

    Ejemplo de solicitud
    https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=id_token token&redirect_uri=<client_redirect_uri>&scope=address+openid+profile&nonce=abcdefghijkl
  2. El usuario se conecta y da su consentimiento (según los ámbitos solicitados).

  3. Respuesta con token de acceso y token de ID.

    Ejemplo de respuesta
    Nota

    Todos los parámetros de respuesta se agregan al componente de fragmento del URI de redirección.
    https://<domainURL>/#access_token=eyJ4NXQjUzI....XWGmeQ&id_token=eyJ4NXQjUzI1....&token_type=Bearer&expires_in=3600

Uso del flujo híbrido con OpenID Connect

Utilice el flujo híbrido cuando desee obtener tokens por separado tanto del canal frontal como del canal posterior. Por ejemplo, tiene un componente de explorador como JavaScript y un componente de servidor de backend como Node.js. El componente del explorador obtiene el código de autorización y el token de ID y, a continuación, puede personalizar el contenido de la interfaz de usuario. El componente de backend obtiene el token de acceso para realizar llamadas a la API de negocio.

Los clientes deben admitir solicitudes y respuestas basadas en explorador, así como solicitudes y respuestas programáticas/de canal secundario para utilizar el flujo híbrido. El flujo híbrido funciona tanto con clientes confidenciales como con clientes públicos. Los siguientes valores response_type están soportados con el flujo híbrido:

  • code id_token (token de ID)

  • code token (token de acceso)

  • code id_token token (código de autorización, token de ID y token de acceso)

Obtención de un token de ID

Hay cuatro pasos en el flujo híbrido para obtener el código de autorización y el token de ID:
  1. Solicite el código de autorización y el token de ID.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code id_token&redirect_uri=<client_redirect_uri>&scope=http://<domainURL>/test+openid+offline_access&nonce=abcdefghijk
  2. El usuario se conecta y da su consentimiento (según los ámbitos solicitados).

  3. Respuesta con token de ID y código de autorización.

    Ejemplo de respuesta

    Nota

    Todos los parámetros de respuesta se agregan al componente de fragmento del URI de redirección.
    https://<domainURL>/#code=AQIDBAUrAi0l....F9NCA=&id_token=eyJ4NXQjUzI1....3R8b_Q
  4. La aplicación cliente utiliza el código de autorización y realiza una solicitud de canal secundario para obtener un nuevo token de acceso y tokens de refrescamiento.

    Ejemplo de solicitud

       curl -i
       -H 'Authorization: Basic YjA3NTZkNDc5M2QwNDZjNjhjZWVmY2UxZjE4ZGUwMWM6NGYzZjJjN2EtZTBjZC00NzcyLWE5MTYtNjI3ZmExNzA2NWE5'
       -H 'Accept: */*'
       --request POST 'https://<domainURL>/oauth2/v1/token' -d 'grant_type=authorization_code&code=AQIDBAUrAi0l???.CA%3D'
    

    Ejemplo de respuesta

    {
    "access_token":"eyJ4NXQjUzI1....sJ5mCw",
    "token_type":"Bearer",
    "expires_in":3600,
    "refresh_token":"AQIDBAUwxxoC....tZLvA"
    }

Obtención de un token de acceso

Hay cuatro pasos en el flujo híbrido para obtener el código de autorización y el token de acceso:

  1. Solicite el código de autorización y el token de acceso.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code token&redirect_uri=<client_redirect_uri>&scope=http://<domainURL>/test
  2. El usuario se conecta y da su consentimiento (según los ámbitos solicitados).

  3. Respuesta con token de ID y código de autorización.

    Ejemplo de respuesta

    Nota

    Todos los parámetros de respuesta se agregan al componente de fragmento del URI de redirección.
    https://<domainURL>/#access_token=eyJ4NXQjUzI1....Pudw9A&code=AQIDBAU6d6Ae....F9NCA=&token_type=Bearer&expires_in=3600
  4. La aplicación cliente utiliza el código de autorización y realiza una solicitud de canal secundario para obtener un nuevo token de acceso.

    Ejemplo de solicitud
       curl -i
      -H 'Authorization: Basic YjA3NTZkNDc5M2QwNDZjNjhjZWVmY2UxZjE4ZGUwMWM6NGYzZjJjN2EtZTBjZC00NzcyLWE5MTYtNjI3ZmExNzA2NWE5'
       -H 'Accept: */*''
       --request POST 'https://<domainURL>/oauth2/v1/token' -d 'grant_type=authorization_code&code=AQIDBAU6d6Ae...NCA%3D'

    Ejemplo de respuesta

    {
    "access_token":"eyJ4NXQjUzI1....Tgs9LA",
    "token_type":"Bearer",
    "expires_in":3600
    }

Obtención de un token de ID y un token de acceso

Hay cuatro pasos en el flujo híbrido para obtener el código de autorización, el token de ID y el token de acceso:
  1. Solicite el código de autorización y el token de ID.

    Ejemplo de solicitud
    https://<domainURL>/oauth2/v1/authorize?client_id=client_id&response_type=cod id_token token&redirect_uri=client_redirect_uri&scope=http://<domainURL>/test+openid&nonce=abcdaer
  2. El usuario se conecta y da su consentimiento (según los ámbitos solicitados).

  3. Respuesta con token de ID y token de acceso.

    Ejemplo de respuesta
    Nota

    Todos los parámetros de respuesta se agregan al componente de fragmento del URI de redirección.
    https://<domainURL>/#access_token=eyJ4NXQjUzI1....sDB7lA&code=AQIDBAVxZzy-....F9NCA=&id_token=eyJ4NXQjUzI1....&token_type=Bearer&expires_in=36004
  4. La aplicación cliente utiliza el código de autorización y realiza una solicitud de canal secundario para obtener un nuevo token de acceso.

    Ejemplo de solicitud
       curl -i
       -H 'Authorization: Basic YjA3NTZkNDc5M2QwNDZjNjhjZWVmY2UxZjE4ZGUwMWM6NGYzZjJjN2EtZTBjZC00NzcyLWE5MTYtNjI3ZmExNzA2NWE5'
       -H 'Accept: */*' ?request
       POST 'https://<domainURL>/oauth2/v1/token' -d 'grant_type=authorization_code&code=AQIDBAXUbLmS???.NCA%3D'

    Ejemplo de respuesta

    {
    "access_token":"eyJ4NXQjUzI1....g52XmQ",
    "token_type":"Bearer",
    "expires_in":3600,
    "id_token":"eyJ4NXQjUzI1....f6JfWA"
    }

Uso de OpenID Connect para desconectar

Puede utilizar OpenID Connect para solicitudes de desconexión basadas en explorador.

Hay dos formas de solicitar una desconexión mediante OpenID Connect:

  1. Redirija al cliente que inició la desconexión.

    Nota

    Asegúrese de definir el URI de redireccionamiento posterior a la desconexión para la aplicación cliente OAuth y de que el token de ID se envía en la solicitud. El token de ID contiene el ID de cliente. La URL posterior a la desconexión correspondiente de ese ID de cliente se recupera y valida.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/userlogout?post_logout_redirect_uri=http://clienthost:port/myapp/return&state=c3004d28&id_token_hint=<IDToken>
  2. Utilice la página de llegada del inquilino.

    Nota

    Esta acción utiliza la página de llegada del inquilino definida en la configuración de SSO del inquilino.

    Ejemplo de solicitud

    https://<domainURL>/oauth2/v1/userlogout