我尝试通过在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>
答案 0 :(得分:2)
您需要在http标记内添加http-basic标记。添加领域名称。
<http realm="My application name" ...>
<http-basic />
...
</http>