如何使用Oauth2和javascript客户端实现长期登录会话(Spring Oauth2 + Angularjs)

时间:2014-07-23 03:21:30

标签: spring angularjs oauth spring-security spring-security-oauth2

我是一个拥有 Spring OAuth2 Angular 客户端的春天后端。

实现长寿命登录的正确方法是什么,这仍然可以说是安全

我想我可以使用密码流刷新令牌,但这似乎比使用长期访问令牌更安全浏览器客户端使用隐式流。我想我可以用:

  • 重定向 - 这会干扰用户正在做的事情
  • 弹出广告 - 在没有用户互动的情况下会被屏蔽

在客户端级别。但有没有更好的方法?

P.S:Cloudfoundry的新用户界面似乎达到了我想要的效果。

2 个答案:

答案 0 :(得分:2)

auth代码流始终优越(更安全,泄漏用户信息的机会更少)。如果您正在编写直接联系OAuth2服务的浏览器托管客户端,那么很遗憾您无法从授权代码流中获取访问令牌。出于这个原因,我认为我更愿意在机器(非浏览器)客户端之间使用访问令牌,并在浏览器和前端服务器之间使用标准的基于cookie的身份验证。如果您公开/ me或/ user_info类型端点,您仍然可以在前端服务器上使用OAuth2进行身份验证(我非常确定CloudFoundry服务器正在做什么)。

或者如果你真的需要在你的客户端获取访问令牌(我想有处理它的库),你可以使用密码或隐式授权。出于安全原因,Implicit是强烈首选的(因为用户只在auth服务器身份验证UI中键入了他的密码),但在这两种情况下,您都需要注意隔离客户端数据,以便(未经身份验证的)客户端无法访问他们不应该做任何事情。

答案 1 :(得分:1)

我的解决方案是使用带隐式授权的隐藏iframe。