Bonjour, quelques points sur la sécurisation des applications avec glassfish.
J'espère que ce post permettra de lever le voile sur cette tache un peu complexe.
Voici mon architecture :
un apache en frontal qui est kerberisé communiquant en mode jk avec la couche suivante. ceci m'est imposé.
un glassfish avec un realm qui référence un loginModule
dans ce glassfish, un war, et un ear. le war communiquant avec les ejbs contenues dans l'ear.
le realm est lié au contexte web dans la partie sécurité du fichier web.xml. Ceci, en mode Basic.
Le loginModule ne fait ici pas l'authentification puisque celle ci est faite par apache (kerberos). Mais on aurait put (dut) la faire directement dans le loginModule.
Ici le loginModule, récupérant le login utilisateur de la requête, s'occupe d'instancier les Principals correspondant au rôles, group de celui ci.
Les implémentations des Principals sont mappés dans les fichiers de déploiement de glassfish sun-web.xml etc...
jusque la tout va bien :
- dans le conteneur de servlet, je récupère bien les rôles et le remoteUser sur la request.
- dans les ejb idem via le SessionContext.
- dans les objets non managés par le conteneur, je peux accéder au Subject qui contient les Principals de l'utilisateur courant via le conteneur JACC.
Première question,
si via les fichiers de déploiement de glassfish, je peux spécifier mes propres implémentation de Principals pour les rôles (remplaçant la classe concrète Group de Glassfish), comment fait on pour spécifier ces propres implémentation de Principals pour le User ?
Deuxième question,
si maintenant je sépare sur deux serveurs distinct le war et l'ear contenant les EJBs, le SessionContext des EJBs n'a plus les Rôles de renseignés. Ce qui en somme me semble logique car ce n'est pas à la couche précédente d'informer les droits de l'utilisateur à la couche suivante. Il me semble logique que cette couche gère les autorisations de son coté. Mais comment faire ? Dans le contexte web, le realm lie l'application au loginModule. Mais dans une contexte EJB, comment dire que les "requêtes IIOP" doivent passer par un loginModule ?
Enfin troisième question,
Malgrés les question précédente, l'application est sécurisé, les technos utilisé ici sont JAAS, et JACC. Cool, maintenant, je voudrais exposer quelques services en WS de façon sécurisé bien sur. comment faire ?
Je suppose que ces WebServices doivent être mis sur une couche web, un autre serveur peut être même. quel framework utiliser pourrais je utiliser les informations de sécurité du WS dans le contexte JAAS sur les objets managés par le conteneur ?
Voilà, j'en ai finit.
Si vous avez des réponses n'hésitez surtout pas.
Si vous avez aussi des questions, n'hésitez pas non plus.
HHF
Partager