1

我有一个带有Spring OAuth2Angular客户端的 Spring 后端。

什么是实现长期登录仍然可以说是安全的正确方法。

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

  • 重定向- 这将干扰用户所做的任何事情
  • 弹出窗口- 在没有用户交互的情况下将被阻止

在客户端层面。但是有没有更好的方法?

PS:Cloudfoundry 的新 UI 似乎已经达到了我想要的效果。

4

2 回答 2

2

auth 代码流总是更好(更安全,泄露用户证书的机会更小)。如果您正在编写一个浏览器托管的客户端直接联系 OAuth2 服务,那么很遗憾,您将无法从身份验证代码流中获取访问令牌。出于这个原因,我认为我更喜欢在机器(非浏览器)客户端之间使用访问令牌,以及在浏览器和前端服务器之间使用标准的基于 cookie 的身份验证。如果您公开 /me 或 /user_info 类型的端点,您仍然可以在前端服务器上使用 OAuth2 进行身份验证(我很确定这就是 CloudFoundry 服务器正在做的事情)。

或者,如果您确实需要在客户端中获取访问令牌(我猜有处理它的库),您可以使用密码或隐式授权。出于安全考虑,强烈建议使用隐式(因为用户只在身份验证服务器身份验证 UI 中输入他的密码),但在这两种情况下,您都需要注意隔离客户端数据,以便(未经身份验证的)客户端无法访问任何内容他们不应该。

于 2014-07-23T14:48:45.680 回答
1

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

于 2014-09-24T02:18:52.873 回答