我是一个拥有 Spring OAuth2 和 Angular 客户端的春天后端。
实现长寿命登录的正确方法是什么,这仍然可以说是安全。
我想我可以使用密码流和刷新令牌,但这似乎比使用长期访问令牌更安全浏览器客户端使用隐式流。我想我可以用:
在客户端级别。但有没有更好的方法?
P.S:Cloudfoundry的新用户界面似乎达到了我想要的效果。答案 0 :(得分:2)
auth代码流始终优越(更安全,泄漏用户信息的机会更少)。如果您正在编写直接联系OAuth2服务的浏览器托管客户端,那么很遗憾您无法从授权代码流中获取访问令牌。出于这个原因,我认为我更愿意在机器(非浏览器)客户端之间使用访问令牌,并在浏览器和前端服务器之间使用标准的基于cookie的身份验证。如果您公开/ me或/ user_info类型端点,您仍然可以在前端服务器上使用OAuth2进行身份验证(我非常确定CloudFoundry服务器正在做什么)。
或者如果你真的需要在你的客户端获取访问令牌(我想有处理它的库),你可以使用密码或隐式授权。出于安全原因,Implicit是强烈首选的(因为用户只在auth服务器身份验证UI中键入了他的密码),但在这两种情况下,您都需要注意隔离客户端数据,以便(未经身份验证的)客户端无法访问他们不应该做任何事情。
答案 1 :(得分:1)
我的解决方案是使用带隐式授权的隐藏iframe。