加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在使用doorkeeper的oauth提供商上为我的用户预授权

发布时间:2020-12-16 20:15:43 所属栏目:百科 来源:网络整理
导读:我已经写了一个oauth提供程序,旨在与我公司的几个Web应用程序一起工作.我正在使用doorkeeper宝石,迄今为止工作良好. 典型的行为是让用户去客户端应用程序,重定向到提供商登录,确认客户端应用程序被授权访问该用户的信息,并重定向到客户端应用程序.但是,我想
我已经写了一个oauth提供程序,旨在与我公司的几个Web应用程序一起工作.我正在使用doorkeeper宝石,迄今为止工作良好.

典型的行为是让用户去客户端应用程序,重定向到提供商登录,确认客户端应用程序被授权访问该用户的信息,并重定向到客户端应用程序.但是,我想跳过用户确认客户端应用程序的步骤.我想为他们做,所以没有提示.

我试图用类似于

Doorkeeper::Application.all.each do |application|
  auth_params = {response_type: 'code',client_id: application.uid,redirect_uri: application.redirect_uri}
  client = Doorkeeper::OAuth::Client.find(application.uid)
  authorization = Doorkeeper::OAuth::AuthorizationRequest.new(client,user,auth_params)
  authorization.authorize
end

但是这不行,它仍然给用户一个客户端应用程序的授权/拒绝提示.建议?

解决方法

OAuth拥有 Resource Owner Credentials Grant流量,Doorkeeper支持.基本上,您使用用户凭据(用户名和密码)请求访问令牌.这样,您可以跳过用户确认,也不需要回调URL.

配置Doorkeeper:

Doorkeeper.configure do
  resource_owner_from_credentials do |routes|
    User.authenticate!(params[:username],params[:password]) # change this if needed
  end
end

示例令牌请求:

curl -i https://example.com/oauth/token 
     -F grant_type=password 
     -F client_id=<client_id> 
     -F client_secret=<client_secret> 
     -F username=user@example.com 
     -F password=password

如果您的OAuth客户端应用程序是Rails应用程序,则可以使用oauth2宝石:

client = OAuth2::Client.new('client_id','client_secret',:site => "https://example.com")
access_token = client.password.get_token('user@example.com','password')

另请参阅Doorkeepers wiki:

https://github.com/applicake/doorkeeper/wiki/Using-Resource-Owner-Password-Credentials-flow

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读