Diseño / Autenticación del Servicio SOA

Soy bastante nuevo en SOA y, por lo tanto, estoy experimentando.

Actualmente, la parte que me crea el mayor problema es la autenticación, mi pensamiento actual al respecto involucra lo siguiente:

El cliente envía algún tipo de mensaje de autenticación al servicio de autenticación / usuario, este servicio consulta la base de datos y, si se encuentra al usuario y la contraseña es válida, responderá con un ID de sesión, este ID se utilizará en todas las solicitudes adicionales de este cliente

Esto me parece bastante bien, pero no sé cómo debo manejar las solicitudes a otros servicios, pensé en tres enfoques diferentes.

Cada servicio le pregunta al servicio de autenticación si la sesión es válida y, de ser así, en qué roles está el usuario. El servicio de autenticación busca en la base de datos y responde en consecuencia.

El servicio de autenticación mantiene toda la información de la sesión en RAM y responde sin el db roundtrip a las solicitudes.

El servicio de autenticación envía un mensaje autorizado a un esb, el esb reenvía este mensaje autorizado a cada servicio y estos servicios lo almacenan en caché. No serían necesarias más solicitudes al servicio de autenticación. Si el usuario cierra sesión o si cambian sus funciones, todos los servicios enviarán y procesarán otro mensaje.

Creo que el primer enfoque crea demasiado estrés en el servicio de autenticación / db pero toma el menor esfuerzo para implementarlo.

El segundo aún es muy fácil de implementar, pero el estrés en el servicio de autenticación sigue siendo casi el mismo.

El tercero es un poco más complicado de implementar pero habría reducido el tiempo de respuesta ya que no se realizan viajes al servicio de autenticación. Sin embargo, si hay demasiada información de sesión, este enfoque simplemente fallaría y la escalabilidad casi no se ofrece.

Respuestas a la pregunta(2)

Su respuesta a la pregunta