网站如何撤销/断开OAuth访问权限?

时间:2014-11-08 00:02:58

标签: ruby-on-rails oauth google-oauth omniauth

这可能是一个非常愚蠢的问题,但我没有找到答案的运气,所以我希望有人会帮助我。 :)

我有一个网站,通过他们的Google或LinkedIn帐户通过OAuth对用户进行身份验证。我想为他们提供选择"断开" OAuth作为登录源(即停止使用他们的Google或LinkedIn帐户作为登录)。我现在所做的只是从我的数据库中删除OAuth数据。这似乎不够,因为下次他尝试连接时不会提示用户允许我的网站访问#34;同一个帐户。它没有显示此提示:

enter image description here

我知道用户可以撤销他在Google或LinkedIn帐户中的访问权限,但是我的网站是否有办法取消访问?

感谢您提供任何指导。 :)

如果有帮助,我会使用omniauth宝石。

1 个答案:

答案 0 :(得分:3)

Google提供了一种以编程方式撤销令牌here的方法。

  

要以编程方式撤消令牌,您的应用程序会向https://accounts.google.com/o/oauth2/revoke发出请求,并将令牌作为参数包含在内:

     

curl https://accounts.google.com/o/oauth2/revoke?token= {token}

如果this thread仍然准确,则LinkedIn无法提供执行此操作的方法。

  

目前没有以编程方式撤销OAuth 2.0访问令牌。

如果要在从应用程序的数据库中删除令牌之前仔细检查您的令牌是否已被撤销,您可以尝试这样的事情:

  1. 要求用户从每个相应应用程序的设置页面撤消令牌
  2. 让用户确认他们已经这样做了
  3. 发出无害请求(例如获取用户的个人资料信息)并期望其未经授权
  4. 如果请求未经授权,则该令牌已成功撤销,您可以将其从数据库中删除