Basic-HTTP-Authentifizierung mit Jersey / Grizzly
Ich geschrieben habe, eine einfache REST-server mithilfe von JAX-RS, Jersey und Grizzly. Dies ist, wie ich den server starten:
URI baseUri = UriBuilder.fromUri("http://localhost/api")
.port(8081)
.build();
ResourceConfig rc = new PackagesResourceConfig("se.aioobe.resources");
HttpServer httpServer = GrizzlyServerFactory.createHttpServer(baseUri, rc);
Nun muss ich zum Schutz der Ressourcen die Verwendung der Basic-HTTP-Authentifizierung, und ich kann nicht herausfinden, wie dies zu tun.
Kann ich wechseln von Grizzly für Jetty-Instanz, wenn es einfacher ist, um es zu arbeiten, aber ich Schätze die einfache Konfiguration /start-up, dass Grizzly bietet.
Ich habe gelesen, eine Menge von tutorials. Sie alle erwähnen, die web.xml aber in meiner aktuellen Konfiguration habe ich keine mehr. (Muss ich hinzufügen, eine für HTTP-Authentifizierung?) Ich habe festgestellt, das folgende Fragen, keiner von Ihnen ist keine Hilfe 🙁
(Kein SSL erforderlich an diesem Punkt. Die Authentifizierung ist an dieser Stelle, nur um zu verhindern, dass die öffentlichkeit von peeking an unsere beta-Version.)
TL;DR: Wie füge ich einfache HTTP-Authentifizierung für ein Trikot /Grizzly webapp?
- Sie wollen auf der container-Ebene, oder JAX-RS-Ebene wird auch die Arbeit?
- Was auch immer ist am einfachsten.
- so, wie Sie dieses Problem lösen? Weil ich habe das gleiche problem.
- Wenn es eine akzeptierte Antwort auf eine Frage, können Sie davon ausgehen, dass das der Weg der OP das problem gelöst. In diesem Fall habe ich sogar geschrieben das meine Antwort selbst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es geschafft, es funktioniert nach ein paar Stunden, basierend auf in diesem blog-post.
Meine Lösung heißt:
Habe ich diese
ContainerRequestFilter
:Und ich habe dann verändert die startup-code, der filter:
Überprüfen Sie die HTTPS-Client-Server-Grizzly Beispiel verteilt mit Jersey, die genau das tut. Hier eine Zusammenfassung aus, die Probe auf das konfigurieren der Sicherheitseinstellungen Filter auf der Grizzly-server.
Registrieren Sie einen SecurityFilter, die kümmert sich um Ihre HTTP-basic-auth. Aktivieren der logging-filter auf dem server sollte zeigen, basic-auth-header in der Anforderung. Hier ist ein Beispiel:
@aioobe bewusst sein, dass, obwohl dies Art der Arbeit, die Sie brauchen, bessere Fehlerbehandlung, wenn Sie die Arbeit mit dem header. Zum Beispiel:
Dies setzt Voraus, dass der authentication header ist einfach, in der Erwägung, dass es vielleicht nicht. Sie sollten überprüfen, dass der authorization-header beginnt mit "Basic" und wenn nicht werfen unbefugte. Das gleiche gilt für sicherzustellen, dass der rest der Informationen ist eigentlich base64-kodiert.