Hinzufügen von Oauth 2.0-Jersey-basierten RESTful-server
Ich habe eine Jersey
basierten server, die ich sichern will mit OAuth 2.0
. Es gibt zwei Wege, die ich gesehen habe, wie üblich:
- Oltu - Ist kompatibel mit Jersey und scheint unterstützt zu werden, wenngleich nicht so gut wie Spring Security. Diese 2012 Frage zu zeigen scheint, dies ist der Weg zu gehen, aber ich möchte eine Bestätigung auf 2016 Kontext, so dass ich Sohn nicht etwas umzusetzen ist nicht so gut mehr unterstützt.
- Spring Security - Es scheint sehr beliebt zu sein, aber dieser Weg impliziert ändern der server in einer Spring-basierten MVC. Ich weiß nicht, ob das etwas ist empfehlenswert, auf der Grundlage der Vorteile der Verwendung von etwas so stark unterstützt wie der Frühling und die Kosten für die Umgestaltung.
Mit Unterstützung meine ich, ein Projekt, das in continous development, gut etablierte community mit tutorials, Materialien und einige libraries für clients (web, mobile, server) bereits vorhanden.
Davon eine stärkere option sein? Gibt es eine andere option oder Optionen?
In jedem Fall. Gibt es ein gutes Referenz-material oder ein tutorial, um mit der Umsetzung beginnen diese?
UPDATE
Nach ein paar Stunden Lesen und Verständnis sowohl über die OAuth-Anbieter hatte ich bereits erwähnt, ich fühle Apache Oltu ist Dokumentation nicht mich leiten viel wie es sind wichtige Komponenten, die nicht dokumentiert, aber eine Beispiel gab mir ein besseres Bild auf, wie Oltu
umgesetzt werden müssen. Auf der anderen Seite, gehen durch Spring Security material habe ich erfahren, dass es weiterhin gebaut auf einem non-Spring MVC-basierte java-Projekt. Aber es gibt eine begrenzte Exposition von Implementierungen/tutorials zu Spring Security auf einem nicht-Feder-basiertes Projekt.
Anderen Ansatz:
Ich kam mit einer Architektur, die könnte stabiler sein würde und Sie kümmern sich nicht um die details der Implementierung der innere-server(die, die bereits umgesetzt Jersey). Mit einem server, der ausschließlich für die Sicherheit Zweck (Autorisierung, Authentifizierung, Token speichern in der eigenen Datenbank, etc) in der Mitte, die verhält sich wie eine Schnittstelle zwischen der Außenwelt und dem inneren server. Es agiert im Grunde ein relais und leitet die Anrufe hin und her und sorgt dafür, dass der client weiß nichts über den inneren server und die Entitäten die Kommunikation mit dem security server. Ich denke, dies wäre der Weg, um vorwärts zu bewegen, wie
- Ersetzen mit einem anderen security-Anbieter bedeutet nur, das Stopfen sich die security server implemetation und füge die neuen ein.
- Der security server kümmert sich nichts über den inneren server-Implementierung und die Gespräche würden noch Folgen, der Rest an Normen.
Ich Schätze Ihre Anregungen oder Rückmeldungen zu diesem Ansatz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Apache Oltu unterstützt OpenID Connect aber seine Architektur ist schlecht. Zum Beispiel
OpenIdConnectResponse
sollte nicht ein Nachkomme vonOAuthAccessTokenResponse
weil eine OpenID Connect response enthält nicht immer ein access-token. Neben der Bibliothek komischerweise enthält einen GitHub-spezifische KlasseGitHubTokenResponse
.Spring Security berühmt ist, aber ich fürchte, es wird nie in der Lage sein, um Unterstützung von OpenID Connect. Sehen Thema 619 über die große Hürde für OpenID Connect-Unterstützung.
java-oauth-server und java-resource-server sind gute Beispiele dafür, Jersey + OAuth 2.0, aber Sie verwenden eine kommerzielle back-End-Dienst, Authlete. (Ich bin der Autor von Ihnen.)
OpenAM, MITREid Verbinden, Gluu, Connect2id und andere OAuth 2.0 + OpenID Connect Lösungen sind aufgelistet in Bibliotheken, Produkte und Tools Seite des OpenID Foundation.
UPDATE für das update von der Frage
RFC 6749 (OAuth 2.0 Authorization Framework) unterscheidet authorization server von einem resource server. Kurz gesagt, ein Autorisierungs-server ist ein server, Probleme, die ein access token und ein Ressourcen-server ist ein server, der antwortet auf Anfragen, die kommen zusammen mit einem access-token.
Für ein Ressourcen-server, API-Gateway ist einer der letzten design-patterns. Amazon, CA Technologies, IBM, Oracle und andere Firmen bieten API-Gateway-Lösungen. API-Gateway-Architektur kann in der Nähe Ihrer Idee. Einige API-Gateway-Lösungen überprüfen des Zugriffs-tokens in Ihre eigenen Wege (weil die Lösungen, Problem, access-Token selbst) und andere Lösungen, die nur delegieren des Zugriffs-token überprüfung von einem externen server (da die Lösungen nicht über einen Mechanismus zur Ausgabe von access-Token). Zum Beispiel, Amazon-API-Gateway ist ein Beispiel dafür, dass die Delegierten access token überprüfung an einen externen server, die Amazon namens benutzerdefinierte Vollmachtgeber. Sehen Sie Folgendes für weitere Informationen über benutzerdefinierte Vollmachtgeber.
Wenn ein authorization server bietet eine Selbstbeobachtung API (wie RFC-7662), die Sie verwenden können, Abfrage von Informationen, die über einen access-token, Ihrer Ressourcen-server-Implementierung ersetzen können (plug-out und hinzufügen) einen Autorisierungs-server zu finden ist relativ einfach.
Für eine athorization-server, gateway-Stil-Lösungen sind selten. Es ist, weil so eine Lösung muss setzen alle notwendigen Funktionalitäten implementieren eines authorization Servers als Web-APIs. Authlete ist solch eine Lösung aber ich weiß nicht, andere.
Ich denke, es ist viel einfacher zu verwenden das oauth-Anschlüsse, die implementiert werden, innen jersey selbst!
Haben Sie sich überlegt mit jersey eigenen OAuth (bereits verlinkt innen jersey) - server /client ?
https://jersey.github.io/documentation/latest/security.html#d0e12970
Werfen Sie bitte einen Blick auf :
hoffe geholfen. 🙂