Ich möchte eine Ressource mithilfe von RESTlet mit einer feinkörnigen Authentifizierung verfügbar machen. Mein ServerResource
sollte nur für authentifizierte Mitglieder (mit BASIC-Authentifizierung) über GET
zugänglich sein. Anfragen mit POST
sollten jedoch auch für Anrufer ohne Authentifizierung verfügbar sein.
Um zu klären:
Ссылка sollte es jedem erlauben, sich mit POST
zu registrieren, aber nur registrierte Mitglieder sollten GET
eine Liste aller Benutzer haben.
Ich bin leider nicht viel in RESTlet und ich finde nur Beispiele mit gröberer Authentifizierung für ganze Restlet
s oder Router
s.
Wie aktiviere ich dann die optionale Authentifizierung für Ressourcen und überprüfe sie auf einer pro-Methode-Ebene?
Vielen Dank im Voraus!
Um die Standardauthentifizierung in RESTlet 2.0 durchzuführen (ich nehme an, Sie verwenden 2.0, da Sie ServerResource
erwähnen), müssen Sie ChallengeAuthenticator
verwenden. Wenn dies mit optional = true
konfiguriert ist, wird die Authentifizierung nur angefordert, wenn Sie ChallengeAuthenticator.challenge()
aufrufen.
Sie können Ihre Anwendung mit einer authenticate()
-Methode erstellen und diese aufrufen, wenn Sie Zugriff auf eine zu sichernde Ressource benötigen:
Anwendung:
%Vor%Ressource:
%Vor%Ich verwende derzeit Restlet v2.0.10.
Das Problem mit ChallengeAuthenticator.isOptional()
ist, dass es alles oder nichts ist. Eine Alternative zu der obigen Antwort von @ sea36 besteht darin, ChallengeAuthenticator.beforeHandle()
zu überschreiben, um entweder die Authentifizierung durchzuführen oder sie basierend auf der Anforderungsmethode zu überspringen. Zum Beispiel erfordert die Ressource unten nur Authentifizierung, wenn die GET-Methode verwendet wird.
Anwendung:
%Vor%Ressource:
%Vor% Beachten Sie, dass in diesem Beispiel die Richtlinie für die Authentifizierung bei GET nur auf UserResource
und nicht auf andere vom Router verwaltete Ressourcen angewendet wird.
Tags und Links java authentication restlet