Oauth2为这种特殊情况选择了什么?

时间:2017-04-04 18:16:17

标签: authentication oauth-2.0

我的服务器上有一个单页应用程序(称之为Collector),并希望我的用户拥有一个可自定义的链接列表,如:

facebook.com/get_my_latest_posts_about_cats github.com/get_my_comments_for_repo_LinuxKernel anynews.com/get_my_soccer_news

他们每次都可以在链接对话框中添加新的/删除链接。

所以我想要做的就是每次登录时都要减轻用户的痛苦,以便从facebook,github,news ...服务器获取数据。

当然,当用户第一次点击他的任何链接时,他将收到该链接的相应登录页面(例如facebook.com/get_my_latest_posts_about_cats - > facebook.com/login),但之后我将会收到使用他们的访问令牌以及存储在Collector database中的刷新令牌,以便他们不必每次都写下他们的通行证和用户名。

我的问题:

(请告诉我,至少它是否有意义,以便我不会对这是如何工作的任何错误想法)

  • 我不知道应该在哪个流程中实施我的Collector网络应用,因为我是第一次这样做,整个authentication process对我来说也是新的,那么哪一个真的符合我的需求呢?
  • 我考虑过user agent流程,因为我不认为我想将client_secret存储在我的Collector数据库中。

1 个答案:

答案 0 :(得分:1)

对于单页应用,通常最好使用隐式流。这样,访问令牌只会到达前端部分 - 保留在浏览器中,它不会到达收集器后端,因为访问令牌位于哈希部分(#34;#&#34后面) ;)来自OAuth2服务器的重定向URL。然后,您可以将访问令牌存储在浏览器的SessionStorage中,以便在重新加载后继续运行。但是如果您使用此流程,则必须使用HTTPS,否则它不安全(访问令牌通过不安全的渠道传输)。

也许你会想要在当前的令牌到期之前获得新的令牌。它通常使用iframe,但它取决于具体的OAuth2服务器实现。您可以查看http://openid.net/specs/openid-connect-session-1_0.html以获取OpenId Connect(这是OAuth2扩展程序)。