2014-10-11 57 views
2

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

当前任何旧用户都可以询问任何范围,并且默认情况下它会被授予。

我看不出在门卫中执行这种逻辑的明显挂钩。在哪里/如何配置这个?

回答

0

这对门卫3.x目前是不可能的。您需要修改OAuth::PreAuthorization类,或者为该gem添加所需的逻辑。

我有类似的需求,所以我做了这个配置选项,你可以指定你自己的preauth类。代码是here。门卫维护人员指示they wanted to think more about the feature

0

使用看门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 
相关问题