|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Architecte de système d'information Inscription : juillet 2012 Messages : 12 ![]() |
Bonjour à tous,
je rencontre un problème avec un de mes servlets. En effet, celui ci est juste un point d'entrée. Son retour déclaré est en HTML, mais la génération se fait via l'appel en URL de 2 autres servlets: l'un renvoie un XML, l'autre une feuille de style XSL. La fusion XSLT de ces éléments donne le résultat du servlet principal. Ce système fonctionne très bien sans authentification. Mais pour des raisons internes on m'a demandé de rajouter une authentification forte via un LDAP. J'ai donc mis en place la sécurité JAAS de J2EE et là ça ne marche plus du tout. L'authentification pour accéder au servlet principal fonctionne parfaitement, mais lorsque celui ci tente d'accéder aux URLS des 2 sous-servlet, il reçoit évidemment des HTTP401 UNAUTHORIZED. Je ne sais pas comment le contourner. Est-il possible de désactiver JAAS si l'émetteur de la requête est localhost, ou de retransmettre aux sous-URL l'authentification du servlet principal ? Merci d'avance pour vos contributions. |
|
|
00
|
|
|
#2 | |
![]() ![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 2 738 ![]() |
Citation:
|
|
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Architecte de système d'information Inscription : juillet 2012 Messages : 12 ![]() |
Bonjour DevServlet,
merci pour ta réponse. Désolé de ne pas avoir répondu plus tôt mais je suis rentré de congés hier. Concernant l'architecture de ce projet, je l'ai retenu initialement car j'ai des servlets qui génèrent des XML, et ces XML peuvent être exploités sous différentes formes. Lorsque ce sont des autres logiciels qui appellent en HTTP, ils reçoivent le résultat sous forme de XML. Mais on peut également consulter certaines informations via un navigateur. Dans ce cas, la même URL est appelée, mais plusieurs feuilles de style XSL peuvent être appliquées pour donner plusieurs zooms différents sur les infos. Maintenant tu n'as pas tort, ce sont des classes métiers qui sont derrière cette génération XML, donc je pourrais les appeler directement, mais en faisant comme ça je suis sur que tous les appels génèrent le même résultat, quelle que soit la mise en forme finale. L'autre raison qui m'a fait retenir cette architecture est que mes XSL contiennent des directives include avec des références relatives au chemin courant. Hors la fusion XSLT ne fonctionne qu'en mode URL dans ce cas. Mais sur ce point là, je peux éventuellement me débrouiller avec une petite bidouille. Je me demande si on ne peut pas implémenter une authentification via un filtre. Dans ce cas, je désactiverais la sécurité si l'URL est demandée depuis le localhost ? Est-ce possible ? Si non, alors il faudra effectivement que je casse la structure de l'application, mais ce sera la dernière option |
|
|
00
|
|
|
#4 | |
![]() ![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 2 738 ![]() |
Citation:
Mais c'est très facile de connaitre l'ip appelante d'une servlet, si c'est ta question... |
|
|
|
00
|
|
|
#5 | ||||
|
Futur Membre du Club
![]() Architecte de système d'information Inscription : juillet 2012 Messages : 12 ![]() |
Pour ce qui est de la récupération d'IP, l'applicatif dont il est question peut justement formater les informations différemment selon un paramétrage qui prend en compte entre autres des plages d'IP des appelants, donc pas de souci de ce coté là. J'ai ce qu'il faut pour récupérer l'IP autant dans les filtres que les servlets.
Ce qui me mène à ma question sur les filtres. Je sais que l’authentification sur CAS Server peut se faire via des filtres inclus dans l'appli J2EE. Mais nous ne souhaitons pas utiliser CAS, qui n'est pas vraiment adapté à ce que nous utilisons. Je préférerais utiliser une authentification JAAS, mais pas en la déclarant dans le web.xml comme c'est le cas actuellement: Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
![]() ![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 2 738 ![]() |
Ah ok, j'ai mieux compris ta demande. En fait tu peux très bien coder une servletFilter par laquelle par laquelle passeront toutes tes requêtes. Et dans cette classe Filter tu testes l'ip et authentifies avant de répondre à la requête. Un exemple ici. Après y'a aussi Spring-security que tu peux paramétrer pour le faire automatiquement.
|
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Architecte de système d'information Inscription : juillet 2012 Messages : 12 ![]() |
Bonjour et merci pour ta réponse, je vais explorer ces pistes.
|
|
|
00
|
|
|
#8 | ||
|
Futur Membre du Club
![]() Architecte de système d'information Inscription : juillet 2012 Messages : 12 ![]() |
bonjour à tous,
finalement après bien des galères j'ai fini par trouver une solution. Il faut en fait récupérer la liste des cookies du premier servlet, retrouver celui qui contient le jsessionid, et le repasser dans la requête d'appel du second servlet. Ce qui nous donne un truc du genre Code :
Merci encore à ceux qui ont consacré un peu de temps à cette file. Et bonne année 2013 à tous |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com