【问题标题】:How to prevent automatic token refresh with Doorkeeper OAuth?如何使用 Doorkeeper OAuth 防止自动令牌刷新?
【发布时间】:2013-04-20 19:37:59
【问题描述】:

我正在使用 Doorkeeper gem 在 Rails 应用程序中提供 OAuth。客户端是 Chrome 扩展程序。

我在 doorkeeper.rb 中注释掉了“use_refresh_token”,并将“access_token_expires_in”设置为 1 分钟。我认为这会迫使客户在一分钟后重新进行身份验证。但是无论 use_refresh_token 是否存在,重新认证都会自动发生。

使用 use_refresh_token 时,每次访问令牌过期时都会在“oauth_access_tokens”中添加一个新行。 'oauth_access_grants' 中没有添加新行。

使用 use_refresh_token 注释掉的新行将添加到两个表中。如果客户端手动重新验证,我会期望。但它似乎是自动发生的——用户被授予访问权限,而无需通过 OAuth 登录屏幕重新验证应用程序,正如我所愿。

抱歉我的无知,我是 Doorkeeper 和 OAuth 的新手,在 Google 等方面没有找到任何线索。

【问题讨论】:

  • 在研究这一点时,我发现 Google API 支持一个approval_prompt 参数,它接受一个“强制”值。这就是我试图用 Doorkeeper 复制的行为

标签: oauth google-chrome-extension doorkeeper


【解决方案1】:

OAuth 2.0 正在工作,因为它正在发送授权 URI 以授权 url 以获取访问令牌,而当用户无权获取令牌时,服务器将他重定向到登录页面,我认为你的情况是过期时间太短了,所以当用户第一次输入用户名和密码时打开的会话仍然有效,所以当您的客户端要求新令牌时,它正在获取它,因为用户仍在授权服务器上登录,您可以更改会话小于令牌有效时间并测试它。

【讨论】:

  • 就是这样,我有点不好意思说--我正在处理不同的子域,并没有意识到用户仍然被授权。由于用户仍然登录,所以oauth 提供者刚刚刷新了令牌。当我整理子域并正确注销用户时,它的行为符合预期。谢谢波波。
猜你喜欢
  • 2016-09-10
  • 2021-09-12
  • 1970-01-01
  • 2021-11-14
  • 2022-01-07
  • 2016-08-13
  • 2017-06-24
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多