首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringSecurity3.2令牌认证

SpringSecurity3.2令牌认证
EN

Stack Overflow用户
提问于 2013-08-08 16:50:52
回答 1查看 3.8K关注 0票数 6

我知道这件事已经问过了,但我不能让它开始工作。以下是我想要实现的目标:

我使用SpringSecurity3.2来保护类似于休息的服务。没有服务器端会话。我没有使用basic auth,因为这意味着我需要将用户的密码存储在客户端的cookie中。否则,用户将需要在每次页面刷新/更改时登录。储存一个记号,我想是较小的邪恶。

  1. web客户端(浏览器、移动应用程序)调用一个REST样的URL以用户名和密码登录"/login“。
  2. 服务器对用户进行身份验证,并将令牌发送回客户端。
  3. 客户端存储令牌,并通过每个api调用将其添加到http请求头中。
  4. 服务器检查令牌的有效性并相应地发送响应。

我甚至还没看过代名词生成部分。我知道它是向后的,但我希望先实现令牌验证部分。

我试图通过使用自定义filer (AbstractAuthenticationProcessingFilter的实现)来实现这一点,但是我似乎对此有错误的想法。

定义如下:

代码语言:javascript
复制
public TokenAuthenticationFilter() {
    super("/");
}

将只触发此URL的筛选器。我坚持一些示例实现,它调用不接受通配符的AbstractAuthenticationProcessingFilter#requiresAuthentication。我当然可以改变这种行为,但这让我觉得我走错了路。

我还开始实现一个定制的AuthenticationProvider。也许这才是对的?有人能把我推到正确的方向吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-09 09:38:47

我认为预选过滤器更适合你的场景。重写抽象预身份验证处理筛选器的getPrincipal和getCredentials方法。如果标头中不存在令牌,则从getPrincipal返回null。

流:

  • 用户首次登录,没有传递标头,因此在securityContext中没有设置身份验证对象,通常的身份验证过程如下: ExceptionTranslation筛选器根据窗体登录筛选器或自定义authenticationEntryPoint将用户重新定位到/login页面。
  • 成功认证后,用户请求安全url,预auth筛选器从securityContext中的标头身份验证对象中获取令牌,如果用户有访问权限,则允许访问安全url。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18131669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档