J'ai un serveur Tomcat 6 contenant trois webApps: une personnalisation en tant que root, Jenkins et Nexus. P>
Je souhaite sécuriser les trois centralement (server.xml?) à l'aide de l'authentification de base. p>
Comment puis-je atteindre ce
4 Réponses :
Deux manières viennent à l'esprit: p>
Cela peut être fait, mais vous devrez travailler dessus. P>
pour Tomcat, essentiellement ce que vous voulez, c'est un Vanve Tomcat A >. C'est comme un filtre de servlet, mais il est spécifique à Tomcat. P>
Vous pouvez placer une vanne dans l'entrée hôte de votre configuration du serveur, puis toutes les applications de cet hôte devront passer par cette vanne. Et cette vanne est ce dont vous avez besoin pour gérer votre authentification de base. P>
Tomcat a déjà une vanne d'authentification de base, mais elle est conçue pour fonctionner avec l'application Web. Vous pouvez probablement saisir la source à cela et pirater dessus pour travailler au niveau de l'hôte plutôt qu'au niveau de l'application Web, protégeant ainsi toutes vos applications sans les configurer individuellement. P>
Maintenant, si vous étiez un peu plus ouvert d'esprit, je suggérerais le single single tomcat sur , puis augmentant chacune des applications Web pour utiliser BASIC dans leur web.xml après la spécification de servlet. C'est un changement essentiellement trivial sur les applications individuelles Web.xml, mais cela résout également le problème pour vous. Mais vous avez dit que vous ne vouliez pas modifier les applications Web, vous êtes donc bloqué en utilisant des trucs spécifiques à Tomcat et "la main" l'artisanat "vous-même à cela. P>
Salut Will, j'ai pris votre idée et l'épissa avec une caractéristique cachée et tout est juste quelques déclarations. Étrange pourquoi cela n'est pas intégré au BasicAuthenticator ...
J'ai d'abord essayé (sans succès) d'inclure la vanne BasicAuthenticator dans conf / context.xml em>. Cela ne semblait avoir aucun effet. Enfin, je l'ai eu pour travailler (sécurisé toutes les webapps) en ajoutant cet extrait à conf / web.xml em> strong>: < / p>
C'est possible, mais Afaik n'est pas possible sans (certains) code. Voici une solution qui fait Tomcat 7 (et 6?) Pour effectuer l'authentification Même s'il n'y a pas de ressources protégées dans l'application Web, appelée PreemtiverAuthentication : p> pop que dans votre contexte où que ce soit (vous devez peut-être créer Cela rendra toute demande entrante avec quoi que ce soit dans l'en-tête d'autorisation pour déclencher une autorisation. Toute demande sans em> l'en-tête d'autorisation passera toujours. P> Le truc restant est donc à Trip que "Fonction" à chaque fois, Strong> Même pour les utilisateurs qui n'envoient aucun en-tête d'autorisation. C'est là que je devais revenir à une vanne. P> Voici le code d'une vanne qui définit une en-tête de demande "Autorisation" à "FOO" s'il n'est pas présent. P> catalina_base / conf / mywebApp.xml Code> Pour protéger MyWebApp.war). P>
http://example.com:8080/mywebapp/ code> fonctionnera, tout en get / li>
http: // utilisateur: mot de passe@example.com: 8080 / mywebApp / code> ne sera pas (ou, il vérifiera un nom d'utilisateur et un mot de passe) LI>
ul>
<Context preemptiveAuthentication="true">
<Valve className="ConditionallyAddFakeAuthorizationHeader"/>
<Valve className="org.apache.catalina.authenticator.BasicAuthenticator" />
</Context>