SSO basado en token para múltiples dominios para solicitudes de API de back-end

1

Estoy en el proceso de configurar el SSO para un servicio que estoy creando. Después de buscar soluciones, no he encontrado nada que se ajuste exactamente a lo que necesitamos. Estoy tratando de asegurar que, desde un punto de vista de seguridad, lo que estamos a punto de implementar es seguro. Y si hay otra solución que hemos ignorado, me encantaría ver eso.

Para los propósitos de este problema, asumamos los siguientes objetos:  - AUTH - este es el cuadro de autenticación de SSO que contiene las credenciales de las personas y almacena los detalles de autorización para otros servicios  - A: el primer servicio (este es un servicio de front-end) en a.com  - B: el segundo servicio (solo servicio de fondo) en b.com  - C: el tercer servicio (servicio exclusivo backend) en c.com  - U: el usuario que accede a los servicios anteriores

El flujo de trabajo que estoy tratando de asegurar es seguro / sensato es:

  1. U quiere usar el servicio protegido A
    • A redirige U a AUTH
    • U firma en AUTH
    • AUTH redirige a A con un token que identifica al usuario U
  2. A quiere comunicarse con B, que quiere comunicarse con C en nombre del usuario
    • A envía una solicitud de back-end (sin sesión del navegador) a B con token
    • B reenvía ese token a C
    • C usa el token para identificar al usuario U

La razón por la que una verdad no tiene sentido para mí es porque AUTH, A, B y C son recursos técnicos, por lo que cada uno de ellos tendría que ser un proveedor y cada uno sería un cliente para otro.

En lo que he estado pensando como solución es usar JWT (JSON Web Tokens). Tras la autenticación, AUTH proporcionará un JWT como el token firmado por una clave privada RS256. Cada servicio (A, B, C) puede verificar la autenticidad del token comparándolo con la clave pública de AUTH. Al recibir una solicitud (es decir, A habla con B), B conoce al usuario U y luego puede hacer ping a AUTH para verificar si U tiene acceso a B.

¿Me estoy perdiendo algo? Siempre me han dicho que nunca debe implementar protocolos de seguridad, por lo que no me atrevo a adoptar esta solución. Sin embargo, no sé cuál sería la mejor manera de manejar esto.

    
pregunta sparknoob 16.05.2016 - 00:02
fuente

0 respuestas

Lea otras preguntas en las etiquetas