2017-04-04 43 views
0

我有一个单页应用(称之为Collector)我的服务器上,并希望我的用户有像链接定制列表:什么Oauth2流为这种特殊情况选择?

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流量,因为我不认为我想在我的Collector数据库中存储client_secret

回答

1

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

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

+0

谢谢你的时间!第一次做某事时会出现很多新手问题。 – Oleg

+1

是的,如果您需要在没有太多经验的情况下做出决定,OAuth2可能会是一个相当大的挑战。 –

+0

另外一件事,如果我实现隐式流程,第一次我的用户想要接收他的Facebook帖子,那么我的js脚本会向facebook服务器发出一个请求,告诉它它需要登录页面并且在这个请求中我做的谎言是client_id,这是我在Facebook dev网站上注册我的'Collector' Web App时得到的id。所以我不需要对我的后端“收集器”代码进行任何更改? 如果我有任何错误,请让我知道:) – Oleg