使用密码授予OAuth-2流程,如果非管理员用户请求scope: 'admin'
访问令牌,我希望能够拒绝发生这种情况 - 我使用带有设备的门卫。
目前,任何旧用户都可以要求任何范围,默认情况下会被授予。
我没有在门卫中看到明显的钩子来执行这种逻辑。我应该在哪里/如何配置?
答案 0 :(得分:0)
门卫3.x目前无法实现这一目标。您需要对⚈ Data in client is _encoded_ latin1 versus utf8
⚈ SET NAMES (or equivalent) is latin1 versus utf8
⚈ The target column's CHARACTER SET is ascii vs latin1 vs utf8
类进行monkeypatch或者对gem进行分叉以添加所需的逻辑。
我有类似的需求,所以我把它变成了一个配置选项,您可以在其中指定自己的OAuth::PreAuthorization
类。代码是here。门卫维护人员指出they wanted to think more about the feature。
答案 1 :(得分:0)
使用Doorkeeper 4.x.x我正在检查是否存在'admin'范围,如果当前用户是门卫初始化程序中的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
end