使用密码授予OAuth-2流,如果非管理员用户请求使用scope: 'admin'
的访问令牌,我希望能够拒绝发生这种情况 - 我正在使用门卫与设计。门卫 - 如果用户不是管理员,则拒绝访问令牌请求
当前任何旧用户都可以询问任何范围,并且默认情况下它会被授予。
我看不出在门卫中执行这种逻辑的明显挂钩。在哪里/如何配置这个?
使用密码授予OAuth-2流,如果非管理员用户请求使用scope: 'admin'
的访问令牌,我希望能够拒绝发生这种情况 - 我正在使用门卫与设计。门卫 - 如果用户不是管理员,则拒绝访问令牌请求
当前任何旧用户都可以询问任何范围,并且默认情况下它会被授予。
我看不出在门卫中执行这种逻辑的明显挂钩。在哪里/如何配置这个?
这对门卫3.x目前是不可能的。您需要修改OAuth::PreAuthorization
类,或者为该gem添加所需的逻辑。
我有类似的需求,所以我做了这个配置选项,你可以指定你自己的preauth
类。代码是here。门卫维护人员指示they wanted to think more about the feature。
使用看门4.x.x我检查了“管理”范围的情况下,如果当前用户是管理员在看门的初始化:
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