如何才允许特定github团队的成员通过oauth访问某个资源?

时间:2016-01-20 06:43:07

标签: ruby-on-rails oauth github-api

所以我按照devise/oauth wiki在Rails 4应用程序中成功设置了一个简单的github oauth应用程序流程。用户通过github登录,验证他们的凭据,并重定向回Rails应用程序页面,显示一切顺利。

我想只允许团队或特定仓库中的某些用户使用他们的github凭据对Rails 4应用程序进行身份验证。而不是使用范围用户,如下所示:

  config.omniauth :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], callback_url: "/users/omniauth_callbacks", scope: "user:email,user:follow"

就像将其更改为:

一样简单
scope: read:org

我对github's scopes的含义有点不清楚。

编辑:

Tetiana在下面的回答让我意识到我误解了范围。我的新理解如下:Github范围控制对用户的Github数据的访问级别。一旦Rails应用程序具有此访问权限,它就可以通过Rails应用程序查询用户所属的团队以及他们是否属于某个团队,然后允许他们访问Rails资源。这种理解是否正确?

1 个答案:

答案 0 :(得分:1)

澄清github 范围(而不仅仅是github。这是OAuth的部分概念请查看此article了解更多信息):

范围与原始问题无关。他们只能代表用户指定您的应用程序中可以执行的操作。

例如,如果范围是 user:email ,则可以使用Rails应用程序获取用户的github电子邮件。您可以发送OAuth请求并获取此信息。但是,您无法获取其他个人资料信息,因为它的范围不同(用户)。