2012-04-02 2 views
0

Ich möchte einen Sicherheitskontext zu meinem Rest Service übergeben.Rest - Jersey.Client pass @SecurityContext zu Server

Auf Server-Seite versuche ich, dieses zu erhalten, mit:

public Response postObject(@Context SecurityContext security, JAXBElement<Object> object) { 
    System.out.println("Security Context: " + security.getUserPrincipal()); 
..... 

Aber eigentlich das SJSO ist null.

Auf Client-Seite im gerade tun:

ClientConfig config = new DefaultClientConfig(); 
    Client client = Client.create(config); 
    client.addFilter(new HTTPBasicAuthFilter("user", "password")); 

Also, ich zusätzlich etwas in meinem web.xml ändern muß, um es zum Laufen zu bringen?

Ich hoffte, es funktioniert, ohne statische Benutzer in der Tomcat-Benutzer xml einzurichten. So kann ich den User/Passwort vom Sicherheitskontext mit meinem "persistenten" user/password hashmap serverseitig vergleichen. Aber wenn es nicht ohne Tomcat-Benutzer-XML funktioniert, wie kann es getan werden, um Benutzer dynamisch diesem Benutzer-XML hinzuzufügen? Wenn ich statische Benutzer bin, kann ich keinen neuen Benutzer registrieren. Ich möchte diesen Versuch nicht verwenden: http://objecthunter.congrace.de/tinybo/blog/articles/89 cuz Ich möchte nur mit einer semi Persistenz wie eine HashMap von Benutzer/Passwort arbeiten.

Neben einer anderen Frage: Warum beziehen sich alle auf Apache HttpClient, wenn es um Sicherheit in Jersey geht, wenn es so funktioniert, wie ich es geschrieben habe?

Mein Versuch bezieht sich auf diesen Beitrag:

Jersey Client API - authentication

Antwort

2

Sie benötigen eine Anwendung auf dem Server einzurichten, so dass es die Standardauthentifizierung erfordert. I.e. Fügen Sie in der Datei "web.xml" in Ihrer Anwendungs-WAR-Datei etwa Folgendes ein: Andernfalls führt Tomcat die Authentifizierung nicht durch und füllt den Sicherheitskontext nicht auf.

<security-constraint> 
    <display-name>Authentication Constraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>all</web-resource-name> 
     <description/> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <description>authentication required</description> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>realm_name</realm-name> 
</login-config> 
+0

Ja, das ist der web.xml Teil. Ich habe viel über mein Problem gelesen. Es scheint, dass ich nicht mit einer halbpersistenten Karte von Benutzern arbeiten kann. Auf der einen Seite kann ich nur mit statischen Benutzern arbeiten, die in der tomcat-user.xml deklariert sind und auf der anderen Seite könnte ich es mit dynamischen Benutzern aus meiner Datenbank tun. –