2016-07-21 7 views
0

Ich habe versucht, dies für mehrere Tage auszuarbeiten. Ich versuche eine formularbasierte Authentifizierung für meine JAVA EE App zu erstellen, die auf Wildfly läuft. Ich benutze JAX-RS und AngularJS. Ich habe die Wildfly Sicherheitsdomäne erstellt alsWildfly Form Authentifizierung

<security-domain name="malison"> 
       <authentication> 
        <login-module code="Database" flag="required"> 
         <module-option name="dsJndiName" value="java:jboss/datasources/malisonDS"/> 
         <module-option name="principalsQuery" value="select password from USER where user=?"/> 
         <module-option name="rolesQuery" value="select position from USER where user=?"/> 
        </login-module> 
       </authentication> 
      </security-domain> 

und konfiguriert folgt meine web.xml

<security-constraint> 
    <display-name>UnSecuredPages</display-name> 

    <web-resource-collection> 
     <web-resource-name>Access</web-resource-name> 
     <url-pattern>/api/user/*</url-pattern> 
    </web-resource-collection>   
    <web-resource-collection> 
     <web-resource-name>Access</web-resource-name> 
     <url-pattern>/user.jsp</url-pattern> 
    </web-resource-collection> 

    <web-resource-collection> 
     <web-resource-name>Access</web-resource-name> 
     <url-pattern>/assets/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

<security-role> 
    <role-name>ADMIN</role-name> 
</security-role> 

Jetzt habe ich ein Problem für meine beglaubigen Funktion das Schreiben von Code. Welches sollte eine Erfolgsantwort an den Client senden. Ich dachte, das würde funktionieren.

@POST 
@Path("/authenticate") 
@Consumes(MediaType.APPLICATION_JSON) 
public String authenticate(@Context HttpServletRequest request, JSONObject obj){ 

    String userName = String.valueOf(obj.get("username")); 
    String password = String.valueOf(obj.get("password")); 
    try{ 
     request.login(userName, password); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return "{\"success\":true, \"msg\": \"Saved successfully\"}"; 
} 

Kann jemand eine Lösung bieten oder Umgehen wäre ich dankbar ...

Antwort

0

Sie müssen Wildfly erklären, welche Sicherheitsdomäne diese Anwendung zur Authentifizierung verwendet. Fügen Sie einen jboss-web.xml WEB-INF:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 
<jboss-web> 
    <security-domain>java:/jaas/malison</security-domain> 
</jboss-web> 

Auch Sie könnte Notwendigkeit, eine Login-Konfiguration web.xml hinzuzufügen. Hier ist ein Beispiel für HTML-Standardauthentifizierung:

<login-config> 
    <auth-method>BASIC</auth-method> 
</login-config> 

Weitere Details hier: https://dzone.com/articles/understanding-web-security

Beachten Sie jedoch, dass Sie nicht Formular-Authentifizierung tun als web.xml es definiert. Sie rufen die Anmeldemethode direkt für die HTTP-Anforderung auf, während bei der in web.xml konfigurierten Formularauthentifizierung der Anwendungsserver nach erfolgreicher Authentifizierung automatisch zur Anmeldeseite und zurück zur gesicherten URL umgeleitet wird.

Verwandte Themen