Authentification HTTP de base avec Jersey / Grizzly
J'ai écrit un REPOS simple serveur à l'aide de JAX-RS, Jersey et Grizzly. C'est comment je démarre le serveur:
URI baseUri = UriBuilder.fromUri("http://localhost/api")
.port(8081)
.build();
ResourceConfig rc = new PackagesResourceConfig("se.aioobe.resources");
HttpServer httpServer = GrizzlyServerFactory.createHttpServer(baseUri, rc);
Maintenant, j'ai besoin de protéger les ressources en utilisant l'authentification HTTP de Base, et je ne peux pas comprendre comment le faire.
Je peux passer de l'Grizzly à la Jetée si elle est plus simple à faire fonctionner, mais j'ai vraiment la valeur de la configuration simple /start up qui Grizzly fournit.
J'ai lu beaucoup de tutoriels. Ils ont tous parler de la web.xml mais dans ma configuration actuelle, je n'en ai pas. (Ai-je besoin d'en ajouter un pour l'authentification HTTP?) J'ai trouvé la la suite questions, aucun d'eux n'est d'aucune aide 🙁
(Pas de SSL requis à ce stade. L'authentification est à ce point juste pour empêcher le public de jeter un oeil à notre bêta.)
TL;DR: Comment puis-je ajouter de l'authentification HTTP de base à un Maillot /Grizzly webapp?
Ce n'est jamais simple.
alors, comment vous résoudre ce problème? Parce que j'ai le même problème.
Si il y a acceptée de répondre à une question, vous pouvez supposer que c'était le moyen de l'OP résolu le problème. Dans ce cas, j'ai même posté la réponse de mon auto.
OriginalL'auteur aioobe | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à le faire fonctionner après une couple d'heures, basé sur ce blog.
Ma solution consiste à:
J'ai créé ce
ContainerRequestFilter
:Et j'ai ensuite changé le code de démarrage pour inclure le filtre:
OriginalL'auteur aioobe
Vous voudrez peut-être vérifier HTTPS Serveur Client Grizzly exemple distribué avec un Maillot qui fait exactement cela. Voici l'essentiel de l'échantillon sur la configuration des filtres de sécurité sur le Grizzli serveur.
Vous vous inscrivez à un SecurityFilter qui prend soin de votre HTTP basic auth. Activation de la journalisation du filtre sur le serveur devrait montrer l'authentification basique en-tête de la demande. Voici un exemple:
OriginalL'auteur Arul Dhesiaseelan
@aioobe être conscient que bien que ce genre de travail vous avez besoin d'une meilleure vérification d'erreur lorsque vous travaillez avec l'en-tête. Par exemple:
Ce qui suppose que l'en-tête d'authentification de Base, alors qu'il pourrait ne pas l'être. Vous devez vérifier que l'autorisation d'en-tête commence avec la "Base", et si pas jeter non autorisée. Même chose pour veiller à ce que le reste de l'information est en fait codé en base64.
OriginalL'auteur jgm