Jax RS Autorisierung

9

Ich habe einen existierenden Code in einer Klasse, die von javax.ws.rs.core.Application

erweitert wird %Vor%

Ich habe keine web.xml in meinem Code. Ich möchte meinem Code eine Autorisierung hinzufügen. Dies gilt: Ссылка gilt nicht für mich, da ich es nicht habe Restlet-Ressourcen.

Wie kann ich die jax rs-Autorisierung in meinen Code implementieren?

EDIT 1: Vorhandener Code verwendet Restlet JAX-RS-Erweiterung: Ссылка

Ich habe das in meiner jax-rs-Ressourcenklasse ausprobiert:

%Vor%

Allerdings wirft es 403, selbst wenn ich mich mit admin user anmelde.

EDIT 2:

Wenn ich hier nachschaue: Ссылка Es gibt ein Stück Code:

%Vor%

Das mag mein Problem lösen, aber ich weiß nicht, wie ich einen Rollenprüfer einstellen soll.

PS: Ich benutze Jersey 1.9 und Restlet 2.2.3.

    
kamaci 14.08.2016, 21:32
quelle

3 Antworten

2

Ich könnte es so machen:

Anwendungsklasse:

%Vor%

Autorisierungsaufzählung:

%Vor%

Bei meinen Ressourcenklassen:

%Vor%     
kamaci 20.08.2016, 16:18
quelle
2

Es ist nicht wirklich klar (zumindest für mich :-)) was Sie erreichen wollen. Wenn Sie eine Klasse haben, die eine Unterklasse von javax.ws.rs.core.Application ist, sollten Sie einfach @RolesAllowed ("user") als Anmerkung zu Ihren Ressourcenklassen hinzufügen können, wie in Ссылка

%Vor%

Wenn Sie auf diese Ressource zugreifen, sollten Sie nach Ihren Anmeldeinformationen gefragt werden. Wenn das nicht funktioniert, müssen Sie ein kleines Codebeispiel bereitstellen, das kompiliert und nicht das tut, was Sie tun möchten. Dann ist es einfacher zu sehen, wo das Problem liegt und was getan werden muss, damit es funktioniert.

    
Guenther 18.08.2016 17:46
quelle
0

Sie müssen Ihre RoleChecker über diese Schnittstelle . Wie der Arzt sagt:

  

Da die Restlet-API keinen eigenen Mechanismus für Rollenprüfungen unterstützt (wie z. B. die Servlet-API), müssen Sie diese Schnittstelle verwenden, wenn Sie Rollenprüfungen in einer JAX-RS-Anwendung benötigen.   Diese Schnittstelle wird verwendet, um zu überprüfen, ob ein Benutzer in einer Rolle ist. Implementierungen müssen Thread-Speichern sein.

Als Beispiel für die Implementierung können Sie Folgendes tun:

%Vor%

Bearbeitet: Auf der anderen Seite, wenn Sie die neue API verwenden, müssen Sie SecurityContext implementieren und sie mit @Context in Ihre Ressourcenmethoden einfügen. Dann holen Sie sich die Rollenliste aus dem Speicher nach Benutzername. Die Speicherimplementierung liegt bei Ihnen. Bitte beachten Sie dieses Beispiel

%Vor%     
Battle_Slug 18.08.2016 18:55
quelle

Tags und Links