2013-08-27 226 views
1

我有这个问题:弹簧安全3.1.4后门

在一个java web-app(与spring和spring-security 3.1.4)有一个sso认证;这意味着用户在他的电脑上登录后即可进行身份验证。

的配置是这样的:

<sec:http> 
    <sec:logout /> 
    <sec:form-login login-page="/login.jsp" default-target-url="/" /> 
    <sec:anonymous username="guest" granted-authority="ROLE_GUEST" /> 
    <sec:custom-filter ref="headersFilter" after="SECURITY_CONTEXT_FILTER" /> 
    <sec:custom-filter ref="jaasFilter" after="SERVLET_API_SUPPORT_FILTER" /> 
</sec:http> 

和这工作(实际上login.jsp中不存在,因为用户已经登录就像我上面说的)。

现在的问题是我想要一个“后门”,这意味着应该有一个登录页面供我和我的团队测试和维护应用程序。

它应该是这样的:

-I调用本地主机/ wepapp/myloginpage,我应该看到myloginpage.jsp(这个现在的工作);

- 我点击“登录”按钮,我进入第二个“元素”,如果登录是好的,那么我应该重定向到“/”(这不起作用,我只是重定向“登录”);

-with它下面的配置看来,我可以看到“/”没有认证,也一样,如果我把它(本地主机/ wepapp)

我想这个配置,但它不工作,我的意思是我可以看到“/”不进行认证,我重定向到登录(我也尝试过其他小的变化,但相同的结果,更多或更少):

<sec:http pattern="/myloginpage"> 
    <sec:logout /> 
    <sec:form-login login-page="/myloginpage" default-target-url="/" /> 
</sec:http> 

<sec:http pattern="/login"> 
    <sec:logout /> 
    <sec:form-login login-page="/login" default-target-url="/" /> 
    <sec:anonymous username="guest" granted-authority="ROLE_GUEST" /> 
    <sec:custom-filter ref="headersFilter" after="SECURITY_CONTEXT_FILTER" /> 
    <sec:custom-filter ref="jaasFilter" after="SERVLET_API_SUPPORT_FILTER" /> 
    </sec:http> 

我myloginpage.jsp:

<form action="login" method="POST"> 
    <table> 
    <tr> 
     <td> 
      Name 
     </td> 
     <td> 
      <input type="text" name="name"> 
     </td> 
    </tr> 
    ......... 
    </form> 

我也有myloginpage控制器:

@Controller 
public class Myloginpage { 

publicMyloginpage() { 

} 

@RequestMapping("/myloginpage") 
public String home() { 
      return "myloginpage"; 
} 

}

Thankx, 阿德里安

+0

*用户一旦他登录到他的电脑*就进行身份验证。所以基本上没有认证? – Bart

回答

0

您似乎缺少<intercept-url>标签配置对某些路径。

<sec:intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
<sec:intercept-url pattern="/secure/**" access="ROLE_USER" /> 
+0

Thankx快速回答!有一个SSO(单点登录)身份验证......这意味着:当用户在他的电脑上登录时,有一个应用程序获取他的用户名和密码并创建一个传递给Java Web应用程序的请求标头;请求标头然后被所有过滤器传递,所以用户在没有登录页面的情况下被认证。我不应该/不能使用“拦截网址”。 Web应用程序没有登录页面,所以请求标头来自某处。我的任务是让我们说“破解”这个系统,所以我必须准备好上面的“myloginpage”并发送我的请求 –

+0

我不确定我是否理解这里的确切想法。你的意思是通过自定义标题来验证访问者的身份吗? – Bart

+0

是的......我需要为开发者创建一个页面。客户将始终使用sso认证系统。 –