Usando JaaS con Jersey en Grizzly

Estoy tratando de encontrar una manera simple y flexible de agregar la autenticación JaaS a REST. Encontre unenviar eso creo que me lleva en la dirección correcta (vea la respuesta de StevenC). Parece que el contenedor de servlets es responsable de la seguridad, no el propio código de Jersey. Me gusta esta idea, pero necesito un poco de orientación sobre la implementación.

Grizzly es mi contenedor de servlets y quiero configurarlo para que use JaaS para la autenticación. Por ahora, una combinación simple de nombre de usuario / contraseña estaría bien, y codificar los pares de nombre de usuario / contraseña directamente en el código está bien. Mientras use JaaS, podemos refinar esos detalles más adelante.

En lo que respecta a lo que se envía a través de HTTP, estoy pensando que almacenar una cookie sería la forma más fácil de hacer que todo esto funcione. Lo que sea necesario para mantener la basura de autenticación lejos de mi código de Jersey.

Aquí está el código para iniciar Grizzly hasta el momento:


final String baseUri = "http://localhost:9998/";
final Map initParams = new HashMap();

initParams.put("com.sun.jersey.config.property.packages", 
  "my.jersey.Service");

System.out.println("Starting grizzly...");
SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams);
System.out.println(String.format(
        "Jersey app started with WADL available at %sapplication.wadl\n"
  + "Try out %shelloworld\nHit enter to stop it...", baseUri, baseUri));                
System.in.read();
threadSelector.stopEndpoint();
System.exit(0);

Si todo este proceso funciona, ¿cuál es la mejor manera de verificar los permisos para el usuario? Probablemente quisiera que mi código REST realmente valide los permisos en ciertos puntos. ¿Estoy en el camino correcto? hay una manera mas facil? Un enlace a un tutorial sería una gran respuesta. Incluso una respuesta como "Hice eso y funcionó" me daría una idea de que voy en la dirección correcta.

Gracias por cualquier ayuda.

EDIT: Algunas aclaraciones para el comentario de StevenC:

¿Aún desea utilizar filtros de servlet para proteger sus recursos? Usaré lo que pueda separar los detalles de autenticación del código de Jersey. No tiene que ser filtros servlet.¿Qué significa "configurarlo para usar JaaS"? El plan original era proteger la API actual utilizando JaaS. La siguiente fase sería hacer que toda la API esté disponible en línea. Parecía tener sentido tener una envoltura de Jersey alrededor de las llamadas a la API, pero mantener la autenticación manejada por Grizzly. Grizzly tendría que interactuar con JaaS en ese momento, creo.¿Piensas que debería haber alguna configuración que simplemente haga que Grizzly proteja tus recursos? Estaba considerando un proceso de dos pasos para autenticar al usuario y basado en roles, autorizando al usuario a acceder a los recursos. La idea era que Grizzly manejara la autenticación (usando JaaS) y Jersey manejara la autorización."No veo la necesidad del uso de cookies con un recurso RESTful". Sería maravilloso eliminar el uso de cookies, pero ¿cómo se puede lograr? El sistema necesita saber si el usuario está autenticado. Prefiero no pedirles que pasen un nombre de usuario / contraseña / etc para cada llamada. Incluso pasar un token de sesión como parámetro con cada llamada parece "feo".

Además, tenga en cuenta que soy bastante nuevo en REST. He estado haciendo SOAP durante un par de años, por lo que puedo tener un "sesgo de SOAP" que puede estar cegándome de alguna solución obvia y simple que todos usan. Si hay una manera más fácil, por favor siéntase libre de compartir. Solo estoy tratando de aprender lo más posible.

Respuestas a la pregunta(2)

Su respuesta a la pregunta