Mehrere login-config für Java-webapp
Ich habe ein Java-web-Anwendung, die eine website für Benutzer-Interaktionen. Um Benutzer zu authentifizieren ich die Anwendung konfiguriert über web.xml FORM-basierte Authentifizierung. Die Nutzer weitergeleitet werden, um eine login-Seite und alles ist in Ordnung so weit.
Nun entwickeln wir ein desktop-client (in C#) für diese web-Anwendung, die den Zugriff auf die Applikationen über RESTful web-services. Ich implementierte diese Leistungen in der gleichen web-app wie eine Website und natürlich der Aufrufer sollte der Webdienst authentifiziert werden auch. Jetzt bin ich aber vor dem problem, dass immer wenn ich einen Webdienst aufrufen, der server ist wieder der login-Seite der HTML-Code als Antwort.
Ich denke, es wäre cool, um in der Lage zu verwenden, eine andere login-config für mein REST-service-servlet (das wäre dann wahrscheinlich die die Standardauthentifizierung verwenden, dann).
Google brachten nicht viel, aber ich kann nicht glauben, ich bin die erste in einer solchen situation. Also ich würde gerne hören, Ihre Gedanken und Lösungen.
Jeder Hinweis ist willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einzige Lösung ist, haben zwei apps für zwei clients mit verschiedenen login-Mechanismen. Die Anwendung code sollte getrennt werden und bewegen es gemeinsam-app, die diese apps mit weiterleiten der Anfragen.
Andere, verwenden Sie Ihre benutzerdefinierte Authentifizierung.
Ich hatte das gleiche problem und konnte keine Lösung finden.
Sie können definieren mehrere Authentifizierungs-Methoden:
http://docs.oracle.com/cd/E24329_01/web.1211/e24485/thin_client.htm#SCPRG164
Aber:
Leider, FORM und BASIC kann nicht existieren zusammen in die Liste der auth-Methode Werte.
Habe ich dieses problem mit einem tomcat-Ventil. Das Ventil überprüft die Anwesenheit von einem Authorization-header, in dem Fall der header ist als Anmeldeinformationen, um den Benutzer zu authentifizieren, sonst wird der normale-Authentifizierung-Methode erfolgt.
Hier ist der code von der Armatur:
Können Sie das Ventil durch das hinzufügen einer < - Ventil - > - tag entweder in der server.xml die Datei in der tomcat-installation, oder in der META-INF/context.xml Datei Ihrer WebApp:
Das Projekt ist auf github: https://github.com/robbyn/mydsrealm
Leider login-config ist nicht belegt, wie Filter und servlets sind, so gibt es nur eine Globale auf die webapp. Das heißt, Sie müssen entweder 2 webapps oder wenn auf JBoss, können Sie die WebAuthentication Klasse zu unterrichten, die container der app programatic login. Allerdings, wenn Sie mit embedded jetty oder anderen web-Servern, es gibt absolut keinen Weg, um die Unterstützung der Standard-und BILDEN zusammen mit web.xml. Sie würde haben schreiben Sie eine benutzerdefinierte Authentifizierung service
Allerdings können Sie konvertieren zu Apache Shiro und es wird diese Probleme lösen, in ein unglaublich gut geschriebenes, übersichtliches design. Diese Schritte können REST-clients entweder für die Verwendung von BASIC auth auf jeder Seite ohne session-cookie oder login /rest/login anmelden und erhalten eine session. Browser-clients können, dann verwenden Sie FORMULAR-auth
Mir geholfen https://wiki.apache.org/tomcat/SSLWithFORMFallback in Kombination mit diesem tomcat-valve, damit die SSL-client-CERT und form und basic fallback-Authentifizierung.
Beste Grüße