2

使用密码授予 OAuth-2 流程,如果非管理员用户请求访问令牌,scope: 'admin'我希望能够拒绝这种情况的发生 - 我正在使用带有设计的门卫。

目前,任何老用户都可以请求任何范围,默认情况下它会被授予。

我没有看到门卫有明显的钩子来执行这种逻辑。我应该在哪里/如何配置它?

4

2 回答 2

1

目前这在 doorkeeper 3.x 中是不可能的。您需要对OAuth::PreAuthorization类进行monkeypatch 或fork gem 以添加所需的逻辑。

我也有类似的需求,所以我把它做成了一个配置选项,你可以在其中指定自己的preauth类。代码在这里。门卫维护人员表示他们想更多地考虑该功能

于 2015-06-26T16:28:45.783 回答
0

使用 Doorkeeper 4.xx 我正在检查是否存在“管理员”范围,以及当前用户是否是 Doorkeeper 初始化程序中的管理员:

resource_owner_from_credentials do
  user = User.find_for_database_authentication(login: params[:login])
  if user&.active_for_authentication? && 
    user.valid_for_authentication? { user.valid_password? params[:password] }
      admin_scope = params[:scope]&.split&.include?('admin')
      user if admin_scope && user.admin? || !admin_scope
    end
  end
end
于 2016-10-18T09:45:11.727 回答