Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Oauth2和javascript客户端(Spring Oauth2+;Angularjs)实现长期登录会话_Spring_Angularjs_Oauth_Spring Security_Spring Security Oauth2 - Fatal编程技术网

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

如何使用Oauth2和javascript客户端(Spring Oauth2+;Angularjs)实现长期登录会话,spring,angularjs,oauth,spring-security,spring-security-oauth2,Spring,Angularjs,Oauth,Spring Security,Spring Security Oauth2,我有一个带有spring OAuth2和Angular客户端的spring后端 实现长期登录的正确方法是什么?这种登录仍然可以说是安全的 我想我可以使用密码流和刷新令牌,但这似乎并不比在浏览器客户端使用隐式流的长寿命访问令牌更安全。我想我可以使用: 重定向-这将干扰用户正在做的任何事情 弹出窗口-在没有用户交互的情况下将被阻止 在客户端级别。但有没有更好的办法 附言:Cloudfoundry的新UI似乎完全达到了我想要的效果。身份验证代码流总是非常优秀(更安全,泄露用户证书的可能性更小)。如

我有一个带有spring OAuth2Angular客户端的spring后端

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

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

  • 重定向-这将干扰用户正在做的任何事情
  • 弹出窗口-在没有用户交互的情况下将被阻止
在客户端级别。但有没有更好的办法


附言:Cloudfoundry的新UI似乎完全达到了我想要的效果。

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


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

我的解决方案是使用隐藏的iFrame和隐式授权。

谢谢Dave,你花了很多时间。你说的“如果我真的需要获取访问令牌”是什么意思?我最终需要访问令牌来访问我的REST后端,不是吗?另外,关于基于cookie的标准身份验证,您的意思是作为oauth2的替代品还是仅仅作为身份验证的一部分?如果您能就这个相关问题给出一个快速的意见,我将不胜感激。我只是想看看,如果我想让FB登录参与进来,密码授权是否可以作为一个选项。我认为从JavaScript客户端访问服务器不一定需要访问令牌(您只需要经过身份验证)。诚然,我对javascript库几乎一无所知,所以我不知道angular提供了什么,但是浏览器已经有了将cookie发送回源站的合同,所以为什么不使用它们呢?好的,我明白你的意思了。但若我的应用程序趋向于发展壮大,所以需要独立的授权和资源服务器,那个么唯一的方法就是访问令牌,对吗?好的一点,坏的一点。我想这就是隐性补助金存在的原因。我相信您可以使用刷新令牌(即使它不在规范中)。我必须承认,我没有真正理解最初的问题。你对隐性补助金有什么担心?