2012-10-03 19 views
6

Estoy diseñando una arquitectura orientada a servicios, y también necesito un servicio de autenticación para reconocer a los clientes y permitirles el acceso a los recursos.SOA - Diseño del servicio de autenticación

En realidad me encontré con dos soluciones posibles:

  • signo cada sola petición usando un pubkey y PrivateKey
  • basada en token de autenticación que utiliza pubkey y PrivateKey

No estoy asumiendo un OAuth2 servicio, ya que agregaría demasiados gastos generales diseñando el sistema para mis necesidades, en su lugar, prefiero adoptar una solución de autenticación más simple (pero también fuerte).

Así que aquí vengo con mi AuthenticationService, que puede ser consultado por el cliente que realiza la solicitud API (obteniendo un token para pasar junto con la solicitud) o ser consultado por cada punto final API para realizar una verificación inversa del HMAC que firmó la solicitud para ver si coincide (verificar si la clave privada utilizada para producir el HMAC era válida).

puedo ver más a ser más fácil para el desarrollador final de la realización de varias operaciones, pero también se requieren más controles para validar el token y el mango es de caducidad ...

¿Qué posibles problemas de seguridad podría la solución testigo plantear que el HMAC de solicitud única no? ¿Qué prefieres y, posiblemente, por qué?

+0

¿qué quiere decir con _SOA authentication_ ?? ¿Estás construyendo tu propia suite SOA? SOA está compuesto de muchas tecnologías (mensajería, servicios web, BPEL, etc.), la suite SOA que utilizará debe proporcionarle los medios ya existentes para autenticar a los usuarios en cada solicitud, ya sea que provengan de fuera del ESB o dentro de eso –

+0

Quiero decir que toda la arquitectura está construida orientada al servicio. Todos los servicios deben reconocer quién es el usuario para permitir/rechazar la solicitud, por lo que necesito autenticación, que también será un servicio independiente en sí mismo. –

+0

@AlonsoDominguez Edité el cuerpo del mensaje, tienes razón, tal vez no podría estar claro como "Autenticación SOA". –

Respuesta

7

Al final finalmente diseñé un servicio de autenticación basado en la misma solución de Amazon. Requiere que los usuarios firmen cada solicitud usando la clave privada. Entonces, la solicitud enviará un encabezado de Autorización con el valor "PUBKEY: SIGNATURE", donde la firma es un HMAC compuesto de cualquier información de solicitud (podría ser el cuerpo de la solicitud) más una marca de tiempo, que se pasará dentro del encabezado de Fecha. Esta implementación es lo suficientemente fuerte como para evitar MITM y reproducir ataques.

Para obtener más información acerca de esta solución, here es una gran explicación que me ayudó mucho a comprender la implementación real.

Espero que esto realmente ayude a alguien más en el mundo que enfrenta el mismo problema.

+3

He estado muy sorprendido en el transcurso de los últimos 6 meses que pocas personas están hablando sobre este tema exacto. Por supuesto, hay mucha discusión sobre la autenticación y autorización de aplicaciones individuales y sus servicios web, así como sobre la identidad federada usando cosas pesadas como Kerberos, CAS, SAML, etc. Sigo volviendo a forzar a OAuth al servicio de este tipo de cosas. . ¿Consideraste a OAuth? ¿Qué te llevó a implementar tu propia solución? –

Cuestiones relacionadas