2

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

我已经保护了资源

http://localhost:8080/app/home

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

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

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

Authorization: Basic c2VjcmV0dXNlcjpzZWNyZXRwd2Q=

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

似乎 Spring 不采用 Authorization 标头。我是否需要配置我的 Spring 应用程序以接受“授权:基本”HTTP 标头?

这是我的安全配置.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>
4

1 回答 1

2

您需要在 http 标签内添加一个 http-basic 标签。也添加领域名称。

<http realm="My application name" ...>
  <http-basic />
  ...
</http>
于 2013-05-31T07:07:59.227 回答