2016-07-21 52 views
0

我已经尝试了几天的工作。我正在尝试为我的JAVA EE应用程序创建一个基于窗体的身份验证,该应用程序在wildfly上运行。我正在使用JAX-RS和AngularJS。我创建了wildfly安全域如下Wild Form表单身份验证

<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> 

和配置我的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> 

现在,我有我的身份验证功能编写代码的问题。哪个应该向客户发送成功回复。我认为这会起作用。

@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\"}"; 
} 

任何人都可以提供一个解决方案或解决我将不胜感激......

回答

0

你需要告诉Wildfly其安全域这个应用程序使用进行身份验证。一个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> 

此外,您可能需要登录的配置添加到web.xml中。下面是HTML基本认证的例子:

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

更多细节在这里: https://dzone.com/articles/understanding-web-security

但是请注意,你是不是做形式验证的web.xml中定义它。您直接在HTTP请求上调用登录方法,而在web.xml中配置表单身份验证时,应用程序服务器会在身份验证成功后自动重定向到登录页面并返回到安全URL。