Bienvenido al servidor OAuth

Este servidor implementa OAuth 2.0:

Introducción

Para usar este servidor OAuth, póngase en contacto con nosotros para solicitar una aplicación OAuth.

Proporcione una breve descripción de la aplicación que está creando, junto con los detalles a continuación. No se preocupe si no está seguro; podemos usar la descripción que proporcione para ayudarle.

  1. El tipo de cliente: ¿público o confidencial?
  2. El tipo de concesión: ¿autorización, credenciales de cliente o dispositivo?
  3. Las URI de redireccionamiento permitidas.
  4. Los recursos a los que desea acceder. Por favor, explore nuestra documentación de la API y nuestra API GraphQL.

Ejemplo (autorización)

1. Generar verificador y desafío de código PKCE

// Generate a code verifier (random string)
const codeVerifier = crypto.randomUUID().replace(/-/g, '');

// Create a code challenge (SHA-256 hash of verifier)
const encoder = new TextEncoder();
const data = encoder.encode(codeVerifier);
const digest = await crypto.subtle.digest('SHA-256', data);
const codeChallenge = btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');

2. Solicitar autorización

GET /authorize/?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&code_challenge=CODE_CHALLENGE&code_challenge_method=S256

3. Intercambiar código de autorización por token de acceso

POST /token/
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=AUTH_CODE&redirect_uri=YOUR_REDIRECT_URI&client_id=YOUR_CLIENT_ID&code_verifier=YOUR_CODE_VERIFIER

4. Acceder a un recurso protegido

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Ejemplo (credenciales de cliente)

1. Intercambiar credenciales por un token de acceso

POST /token/
Authorization: Basic BASE64_ENCODED(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

2. Acceder a un recurso protegido

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Ejemplo (dispositivo)

1. Autorizar dispositivo

POST /device-authorization/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID

El dispositivo debe utilizar la respuesta para mostrar o comunicar el user_code y la verification_uri al usuario final. Los dispositivos con pantalla pueden mostrar esta información visualmente, mientras que los dispositivos sin pantalla pueden utilizar alternativas como audio o Bluetooth.

         +-----------------------------------------------+
         |                                               |
         |  Using a browser on another device, visit:    |
         |  https://auth.example.com/device              |
         |                                               |
         |  And enter the code:                          |
         |  ETE39050                                     |
         |                                               |
         +-----------------------------------------------+

El usuario visita la verification_uri para autenticarse, introduce el user_code y autoriza el dispositivo.

2. Intercambiar código de dispositivo por token de acceso

Mientras el usuario autoriza, el dispositivo debe intentar periódicamente adquirir un token de acceso (a una tasa especificada por los segundos del interval):

POST /token/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&device_code=DEVICE_CODE&grant_type=urn:ietf:params:oauth:grant-type:device_code

3. Acceder a un recurso protegido

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Ejemplo (intercambio de tokens)

Se admiten las semánticas de delegación de RFC 8693. Esto significa que utilizará el token de credenciales de cliente tanto en el encabezado Authorization como en el actor_token, como se muestra a continuación.

1. Recupere un token de acceso para su aplicación de credenciales de cliente, tal como se describe en Ejemplo (credenciales de cliente).

2. Suponiendo que se ha emitido un EXTERNAL_IDP_USER_ACCESS_TOKEN por parte de su IdP externo, realice la llamada de intercambio de tokens:

POST /token
Authorization: YOUR_CLIENT_CREDENTIALS_ACCESS_TOKEN
Content-Type: application/x-www-form-urlencoded

grant_type="urn:ietf:params:oauth:grant-type:token-exchange"&
actor_token_type="urn:ietf:params:oauth:token-type:access_token"&
actor_token=YOUR_CLIENT_CREDENTIALS_ACCESS_TOKEN&
subject_token_type="urn:ietf:params:oauth:token-type:access_token"&
subject_token=EXTERNAL_IDP_USER_ACCESS_TOKEN

3. Acceder a un recurso protegido

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Recursos