Tutorial: Usando la Sensedia API Platform para Autorización de Publicadores

El Events Hub permite usar un servidor externo para validar client ID y/o tokens de acceso de publicadores que envían peticiones al Events Hub. Una de las opciones es utilizar la Sensedia API Platform para realizar esta validación.

Clientes de Sensedia API Management v5: Para validar client ID y/o tokens de acceso de publicadores, deberá importar la API de autorización de Events Hub.

Imagine que está organizando un evento en un local. Quiere que solo entren las personas autorizadas. Así que coloca un guardia de seguridad en la entrada para comprobar la identidad de las personas. El servidor de autorización actúa de la misma manera. Usted selecciona el tipo de validación que quieres hacer y él se encarga de que se lleve a cabo.

¿Cómo funciona?

En la página Policies, puede crear políticas de seguridad para aplicarlas a los handlers.

La configuración de las URLs de autorización se realiza por context. Este es uno de los marcadores de la URL de publicación del evento, formada por: URL base + context + handler + topic.

Hay 5 interceptores disponibles y 4 necesitan el servidor de autorización del editor para funcionar. Estos son:

  • Access Token Validation

  • Client ID Validation

  • OAuth Validation

  • JWT Validation

Cuando se selecciona cualquiera de ellas, es necesario configurar la URL de autorización en la pantalla Authorizations.

Obtener la URL de autorización utilizando la Sensedia API Platform

Para utilizar la Sensedia API Platform como servidor de validación de políticas:

  1. Vaya a API Design > API Catalog y busque API Events Hub Authorization;

  2. En API Events Hub Authorization, vaya a la sección Environments;

  3. Elija el entorno que desea configurar, haga clic en el icono icon link y copie la URL. Necesitarás complementarla con la información del interceptor, así que pégala en un archivo;

  4. Ve a la sección Resources and Operations y copia el path POST del tipo de interceptor que vayas a utilizar;

  5. Pega el path del interceptor al final de la URL del entorno. Esta será la URL de su autorización;

  6. Con la URL completa copiada, vaya a Events Hub > Authorizations y busque el contexto que será validado por esta autorización;

  7. Haga clic en el icono icon add1, pegue la URL de la autorización y guarde.

Para registrar un contexto de prueba para la autorización, en la sección Environments, copie el enlace a su entorno de prueba.

La sección Resources and Operations está dividida entre OAuth y JWT. Al copiar el path de su URL, tenga en cuenta que:

  • La URL de autorización debe generarse respetando las políticas insertadas en el contexto;

  • Si ha insertado interceptores de validación OAuth, copie el path de OAuth.

  • Si ha insertado interceptores de validación JWT, copie el path de JWT.

Configurar Client ID Validation

El interceptor Client ID Validation requiere una simple validación de client ID.

Al registrar este interceptor para una política, debe definir el nombre que se utilizará para pasar el valor de client ID (por ejemplo: client_id) y dónde se pasará en la petición (cookie; header; header o cookie; query param; o any).

Para utilizarlo, siga estos pasos:

  • En la Sensedia API Platform

    1. Vaya a Consumers > APPS y haga clic en + Create APP;

    2. En la pestaña APIS AND PLANS, busque Events Hub Authorization 1.0 y selecciónela en el botón SELECT ALL PLANS;

    3. Haga clic en el botón PUBLISH YOUR APP;

En Events Hub

  1. Registre el publicador

    1. Con la APP guardada, acceda a la pantalla Publishers;

    2. Sitúe el cursor sobre el botón + y haga clic en Import From API Platform;

    3. Busque la APP que ha registrado y haga clic en SAVE;

    4. Haga clic en ADD ENABLED TOPICS y vincule el publicador al tema que desee;

    5. En la misma pantalla, haga clic en el icono icon view topics para habilitar el contexto que será validado por el interceptor. Si no habilitas ninguno, la validación no funcionará.

  2. Acceda al Handler

    1. En la pantalla Handler, busca el que has registrado para esta validación;

    2. En la pestaña Topics, copia la URL del contexto habilitado para el interceptor Client ID;

      • En Postman

    3. En POST, pegue la URL de su contexto;

    4. Inserte el parámetro client ID en el header de la petición, con el mismo nombre que el que registró para la política (ej. client_id) y haga clic en Send;

    5. Puede ver si la petición se ha realizado correctamente haciendo clic en el icono icon event status de su handler.

Configurar Access Token Validation

El interceptor Access Token Validation requiere la validación de un access token. Este debe ser obtenido usando el flujo OAuth elegido por el publicador.

Al registrar este interceptor para una política, debe definir el nombre que se utilizará para pasar el valor de access token (por ejemplo: access_token) y dónde se pasará en la petición (cookie; header; header o cookie; query param; o any).

Para utilizarlo, siga estos pasos:

  • En la Sensedia API Platform

    1. Vaya a Consumers > APPS y haga clic en + Create APP;

    2. En la pestaña APIS AND PLANS, busque Events Hub Authorization 1.0 y selecciónela en el botón SELECT ALL PLANS;

    3. Haga clic en el botón PUBLISH YOUR APP;

Si ya tienes una APP con un plan vinculado a la API Events Hub Authorization 1.0, no necesitas hacer esto de nuevo.
  • En Postman

    1. Generación del access token Para obtener el token, debe realizar una petición a la API OAuth desplegada en su Plataforma. Te mostraremos cómo hacerlo utilizando el flujo client-credentials:

Para conocer los demás flujos disponibles, visita la documentación OAuth 2.0: flujos de recuperación de token de acceso.

1. En POST, haga una petición al endpoint <url-del-gateway>/oauth/access-token;
2. En el header de la petición, debe pasar:

Authorization : Basic client_id:client_secret

Ejemplo de header con client_id y client_secret en Base64:

Authorization : Basic ZjkyMTIxNzMtZTcwNS0zNzNiLWE2OTgtNjE5MjNlMzc4MzU5OjAyYWI1Mjg4LTkyZGItM2FiMy05OWZkLWZhYzRhZjg1N2Q4MQ==

3. En el cuerpo, debe pasar el grant_type en formato x-www-form-urlencoded.

"grant_type": "client_credentials"

4. El access token será generado y devuelto en el cuerpo de la petición, como en el siguiente ejemplo:

{
  "access_token": "6c164a82-84a6-3bc4-8122-f777121a4f62",
  "token_type": "access_token",
  "expires_in": 3600
}
  • Para probar la política

    1. Copie la URL de su contexto y péguela en POST;

    2. Inserta el parámetro de access token en el header de la petición, con el mismo nombre que el que registraste para la política (e.g. access_token);

    3. Pega la clave de tu access token en el valor y clica Send;

    4. Puede comprobar si la petición se ha realizado correctamente haciendo clic en el icono icon event status de su handler.

OAuth Validation

El interceptor OAuth Validation requiere la validación de client ID y access token. Si aún no lo has hecho, consulta los temas:

Los valores de client ID y access token deben pasarse en el header de la petición.

  • Probando la política en Postman

    1. Copie la URL de su contexto y péguela en POST;

    2. Pegue el valor de su client ID en el header;

    3. Pega el valor de tu access token en el header;

    4. Haga clic en Send;

    5. Puede ver si la petición se ha realizado correctamente haciendo clic en el icono icon event status de su handler.

JWT Validation

El JWT Validation interceptor requiere la validación de un token JWT que debe ser obtenido por el flujo JWT de OAuth.

Al incluir este interceptor en una política, debe definir el nombre que se utilizará para pasar el valor del access token (por ejemplo: access_token) y dónde se pasará en la petición (header; default JWT header; o query param).

Para que este interceptor funcione, debe registrar la URL de la autorización JWT de su contexto en la pantalla Authorizations. Consulte cómo obtener la URL de autorización utilizando la Sensedia API Platform.

Para configurarlo, siga estos pasos:

  • En la Sensedia API Platform

    1. Vaya a Consumers > APPS y haga clic en + Create APP;

    2. En la pestaña APIS AND PLANS, busque Events Hub Authorization 1.0 y selecciónela en el botón SELECT ALL PLANS;

    3. Haga clic en el botón PUBLISH YOUR APP.

Si ya tienes una APP con un plan vinculado a la API Events Hub Authorization 1.0, no necesitas hacer esto de nuevo.
  • En Postman

1. Generar el code

Para obtener el token, debe generar el code realizando una solicitud a la API OAuth desplegada en su Plataforma.

1. En el POST, haga una petición al endpoint <url-del-gateway>/oauth/grant-code;
2. En el header de la petición, debe pasar:

Content-Type : application/json

3. En el cuerpo, introduzca la información siguiente. Recuerda sustituir el ID de cliente del ejemplo por el de tu APP:

{
  "client_id": "f9212173-e705-373b-a698-61923e378359",
  "extraInfo": {},
  "redirect_uri": "string",
  "state": "string"
}
La redirect_uri debe rellenarse con una URL. Puede introducir, por ejemplo: www.prueba.com

En la respuesta, se devolverá el code después del signo =, como en el ejemplo siguiente:

{
  "redirect_uri": "string?state=string&code=8748d39f-1d4f-311f-92c6-4b279db1b317"
}

2. Generación del token JWT.

Con el code copiado, puedes generar el token JWT:

1. En POST, haga una petición al endpoint <url-del-gateway>/oauth/access-token;
2. En el header de la petición, debe pasar:

Authorization : Basic client_id:client_secret

3. En el cuerpo, selecciona el formato json y pasa la siguiente información, con el número de code que generaste en la petición anterior:

"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer"
"code" : "8748d39f-1d4f-311f-92c6-4b279db1b317"

4. El token será devuelto en la respuesta de la petición, como en el ejemplo siguiente:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJsb2NhbGhvc3QiLCJpc3MiOiIxNzIuMTguMC4xIiwic3ViIjoiOWI1Zjc3MWUtNzgyZC0zNTEwLWI2YmEtMzZlOWM2NWJmZDVkIiwiZXhwIjozNjAwLCJpYXQiOjE1Mjg5MTg2MzcsIkFwcDogIjoiRGVtb0FwcCIsIkNvZGU6ICI6IjRlNWIyMTEzLTJkYzYtM2RlNi1iN2ZkLWNkOTYxOTMxZWQyOSIsImxvZ2luIjoidXNlci5sb2dpbiJ9.DVSd_yIKiWqIRpcFUhpB5JT9HMUE4mI5fAcpzs4QOkM",
  "token_type": "access_token",
  "expires_in": 3600
  }
  • Probando la política en Postman

    1. Copie la URL de su contexto y péguela en POST;

    2. Pega el valor de tu token JWT en el header;

    3. Haga clic en Send;

    4. Puede comprobar si la petición se ha realizado correctamente haciendo clic en el icono icon event status de su handler.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]