使用密码授予OAuth-2流,如果非管理员用户使用scope: 'admin'请求访问令牌,我希望能够阻止这种情况发生-我正在使用devise的doorkeeper。
目前,任何老用户都可以请求任何作用域,并且默认情况下会被授予作用域。
我没有看到门卫中有明显的钩子来执行这种逻辑。我应该在哪里/如何配置它?
发布于 2015-06-27 00:28:46
这在目前的守门人3.x版本中是不可能的。您需要对OAuth::PreAuthorization类进行monkeypatch或派生gem,以添加所需的逻辑。
我也有类似的需求,所以我将此设置为一个配置选项,您可以在其中指定自己的preauth类。代码是here。看门人维护人员指出了they wanted to think more about the feature。
发布于 2016-10-18 17:45:12
使用Doorkeeper 4.x.x,我检查' admin‘作用域是否存在,以及当前用户是否为Doorkeeper的初始值设定项中的admin:
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
endhttps://stackoverflow.com/questions/26310307
复制相似问题