在Spring中处理HTTP Basic Authorization标头

时间:2013-05-31 06:43:46

标签: spring authentication spring-security http-headers spring-3

我尝试通过在HTTP标头中发送凭据来对Spring应用程序进行身份验证(Basic Auth)。

我已保护,例如资源

http://localhost:8080/app/home

未经身份验证的用户被重定向到

http://localhost:8080/app/login.jsp

现在我向localhost:8080 / app / home发送一个GET请求,其中包含HTTP标头中的编码凭据,如下所示:

Authorization: Basic c2VjcmV0dXNlcjpzZWNyZXRwd2Q=

我使用“Advanced Rest Client”Chrome插件发送请求,因此我非常确定标头是否正确发送。但服务器通过重定向到login.jsp页面来回答。

Spring似乎没有采用Authorization标头。我是否需要将Spring应用程序配置为接受“Authorization:Basic”HTTP标头?

这是我的security-config.xml:

<http use-expressions="true" access-denied-page="/login.jsp?authorization_error=true" xmlns="http://www.springframework.org/schema/security">
         <intercept-url pattern="/login.jsp" access="permitAll" />
         <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />

           <form-login authentication-failure-url="/login.jsp?authentication_error=true" default-target-url="/home"
            login-page="/login.jsp" login-processing-url="/login.do" />
        <logout logout-success-url="/index.jsp" logout-url="/logout.do" /> 
        <anonymous />
</http>

1 个答案:

答案 0 :(得分:2)

您需要在http标记内添加http-basic标记。添加领域名称。

<http realm="My application name" ...>
  <http-basic />
  ...
</http>