我知道这个问题已经被问过了,但是我无法让它工作。
这是我想要完成的事情:
我正在使用Spring Security 3.2来保护REST风格的服务。没有服务器端会话。
我没有使用基本身份验证,因为这意味着我需要在客户端cookie中存储用户的密码。否则,用户需要在每次页面刷新/更改时登录。存储令牌可能是较小的恶。
- Web客户端(浏览器、移动应用程序)使用用户名和密码调用类似REST的URL来登录“/login”
- 服务器对用户进行身份验证并向客户端发送一个令牌
- 客户端存储该令牌,并在每次api调用时将其添加到http请求标头中
- 服务器检查令牌的有效性,并相应地发送响应
我甚至还没有看过令牌生成部分。我知道这是反向的,但我想先实现令牌验证部分。
我试图通过使用自定义过滤器(AbstractAuthenticationProcessingFilter的实现)来实现这一目标,但是我似乎有错误的想法。
像这样定义它:
public TokenAuthenticationFilter() {
super("/");
}
仅会针对此确切URL触发过滤器。 我正在遵循一些示例实现,其中调用AbstractAuthenticationProcessingFilter#requiresAuthentication,它不接受通配符。 当然,我可以改变这种行为,但这让我觉得我走错了路。
我还开始实现自定义的AuthenticationProvider。也许那是正确的事情? 有人能给我一个正确的方向吗?