Kev*_*ore 5 ruby-on-rails ruby-on-rails-4 doorkeeper
我正在压倒门卫AuthorizationsController.正如文档建议我继承自AuthorizationsController.现在,下面的代码显示了我对覆盖的最新尝试.
我现在有什么
基本上,在新的Authorization Doorkeeper流程周围添加额外的if语句.我添加了第3-7行,目前工作正常.:error如果第6行等于true,它返回我.
我的问题
我仍然可以通过浏览器URL和服务器日志看到AccessToken.因此,作为用户,我仍然可以使用此AccessToken来检索Postman中的某些数据.甚至在登录时它给我一个错误.这是为什么?我怎么能防止这种情况发生?
class AuthorizationsController < Doorkeeper::AuthorizationsController
def new
application = Application.find(authorization.authorize.pre_auth.client.id)
resource_owner = User.find(current_resource_owner)
if application.users.exclude?(resource_owner) && application.owner != resource_owner
render :error
elsif pre_auth.authorizable?
if skip_authorization? || matching_token?
auth = authorization.authorize
redirect_to auth.redirect_uri
else
render :new
end
else
render :error
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果您查看DigitalOcean编写的OAuth2 简介,我的if语句仍然在第3步"用户代理接收带有重定向URI的访问令牌"上成功,因为我可以在浏览器URL中看到带有重定向URI的AccessToken.在第3步之后,它给了我:error.
UPDATE
生成AccessToken的整个过程在我的覆盖AuthorizationsController启动之前已经完成.我添加了一个简单before_action的打印到服务器日志,但在此之前Doorkeeper::AccessToken Load (0.9ms) SELECT 'oauth_access_tokens'.* FROM 'oauth_access_tokens' WHERE 'oauth_access_tokens'.'token' = 'x' LIMIT 1.
小智 1
您假设您在浏览器 URL 中看到的令牌是 OAuth access_token。它实际上只是一个JWT(JSON Web Token)。我假设此令牌是某种会话令牌,因为 Doorkeeper 尚未授权用户使用该应用程序。您错误地假设您的 OAuth 流程到达“用户代理通过重定向 URI 接收访问令牌”步骤。
您的网址中的令牌根本没有害处,因此您没有理由阻止您的应用程序发出令牌。如果用户中断会话,则令牌将变得毫无用处。
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |