gpt4 book ai didi

ruby - 如何在使用门卫的 oauth 提供商上为我的用户预授权客户端应用程序?

转载 作者:数据小太阳 更新时间:2023-10-29 06:36:01 25 4
gpt4 key购买 nike

我编写了一个 oauth 提供程序,旨在与我公司的几个 Web 应用程序一起使用。我正在使用 doorkeeper gem,到目前为止效果很好。

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

我试图模仿代码 I found here像这样:

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 支持的流程。基本上,您使用用户凭据(用户名和密码)请求访问 token 。这样您就可以跳过用户确认,也不需要回调 URL。

配置门卫:

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

示例 token 请求:

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为此的 gem :

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

关于ruby - 如何在使用门卫的 oauth 提供商上为我的用户预授权客户端应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com