Tag: 门卫

在rails + doorkeeper中使用grant_type = password在访问令牌请求中强制设置client_id和secret

目前我在使用doorkeeper的rails中的请求中有一个访问令牌api,其中包含用户名,密码和grant_type作为密码。 但我需要将client_id和secret作为请求中的必填字段。 我怎样才能做到这一点。 任何人都可以帮助做到这一点。 在我的doorkeeper.rb配置文件中, resource_owner_from_credentials do |routes| #client = OAuth2::Client.new(request.params[:client_id], request.params[:client_secret], site: “http://localhost:3000/”) #auth_url = client.auth_code.authorize_url(:redirect_uri => “urn:ietf:wg:oauth:2.0:oob”) request.params[:user] = {:email => request.params[:username], :password => request.params[:password]} request.env[“devise.allow_params_authentication”] = true request.env[“warden”].authenticate!(:scope => :user) end 我想使用用户凭据进行身份validation,并且还希望将client_id和secret设为必填字段。 如果缺少client_id和secret,我想显示一条消息。

过滤链停止为:doorkeeper_authorize! 渲染或重定向

我正在构建一个Rails API,目前正在使用门卫并设计使用ResourceOwnerFromCredentials流来validation用户。 一切正常,但我无法在Rspec中使用身份validation。 以下是如何在rspec中集成应用程序: let(:app_country) { FactoryGirl.create(:app_country)} let(:valid_attributes) { FactoryGirl.attributes_for(:app_city, {:app_country_id => app_country.id}) } let(:valid_session) { {:format => :json} } let(:application) { Doorkeeper::Application.create!(:name => “App HQ dashboard”, :redirect_uri => “https://localhost:3000/callback”) } let(:hq_user) { app_country.hq_users.create!(FactoryGirl.attributes_for :hq_user) } let(:token) { Doorkeeper::AccessToken.create! :application_id => application.id, :resource_owner_id => hq_user.id } 但每次我尝试测试受保护的操作时,测试都会失败,我从控制台获得以下输出: Filter chain halted as :doorkeeper_authorize! rendered or redirected […]

带有Doorkeeper和Angular的Oauth2密码授予类型

我有一个使用Doorkeeper的Rails API和Oauth2的密码授权方法。 门卫需要将client_id和client_secret发送到令牌请求( /oauth/token ),以及用户的登录详细信息和范围。 我将如何在Angular应用程序中执行此操作? 我不喜欢存储客户端ID和秘密客户端的想法……

如何在Doorkeeper :: TokenController上使用before_action

我在使用Doorkeeper :: TokensController时遇到了麻烦。 我想在访问令牌被要求之前执行一些代码(如果它是否已创建,我想要使用before_action进行记录)(默认路由是POST /oauth/token / Doorkeeper::TokensController#create 。 我通过以下方式跟踪了这里的文档: 配置/ routes.rb中 use_doorkeeper do controllers tokens: ‘oauth/access_tokens’ end 应用程序/控制器/ access_tokens_controller.rb class Oauth::AccessTokensController < Doorkeeper::TokensController before_action :log_auth, only: [:create] def log_auth puts "I want to log here" end end 但是当我执行POST /oauth/token ,我有以下错误消息: ActionController :: RoutingError(Oauth :: AccessTokensController的未定义方法’before_action’:Class): app / controllers / oauth / access_tokens_controller.rb:2:在’class:AccessTokensController’中 app / controllers […]

如何在门卫中执行仅应用程序身份validation(oauth2)

Twitter为他们的api提供仅限应用程序的身份validation: https : //dev.twitter.com/docs/auth/application-only-auth Twitter使应用程序能够代表应用程序本身发出经过身份validation的请求(而不是代表特定用户) 我想在Rails中对门卫做同样的事,但我不知道该怎么做。 似乎只能通过回调urlvalidation用户,但是如何使用应用程序上下文访问我的API(仅使用应用程序ID和应用程序密钥) 我的第一个想法是使用应用程序的ID和密码进行密码凭证登录,以获取属于该应用程序的访问令牌。 这是一个坏主意吗? 从安全的角度来看是否安全? 我想知道因为应用程序的秘密在db中保存为纯文本,这是用户身份validation的禁忌。

如何将门卫访问令牌作为json返回

我正在尝试为iOS应用程序创建一个登录系统,其中导轨后端由设备和门卫提供支持。 我想限制网络请求的数量,因此不希望必须从凭证中获取令牌,然后将用户详细信息作为单独的请求获取。 这是我目前的尝试: token = Doorkeeper::AccessToken.create!(application_id: @application_id, resource_owner_id: current_user.id, :expires_in => 168.hours) puts token.token render :json => {:user => current_user, :token => token.as_json(:include=> token)}, status: :ok, location: :users 然而,返回的是: {“user”:{“id”:2,”email”:”user3@test.com”,”created_at”:”2014-06-12T17:25:12.000Z”, “updated_at”:”2014-06-13T12:20:18.536Z”, “firstName”:”user”,”lastName”:”test”,”subscription”:null}, “token”:{“resource_owner_id”:2,”scopes”:[],”expires_in_seconds”:604800, “application”:{“uid”:”[Filtered]”}}} 因此,实际的access_token密钥不会被传回以允许我进行将来的调用。 我可以看到在DoorKeeper::AccessToken.as_json没有返回令牌本身,但token.as_json(:include=> token)仍然没有返回它。 有谁知道如何返回AccessToken,包括访问令牌本身,如json?

401 Unauthorized – 在Doorkeeper中请求刷新令牌时授予无效

我在请求刷新令牌方面遇到了麻烦,它一直在返回未经授权的401错误。 我不知道在我提出请求时是否缺少参数。 我添加了刷新令牌的门卫配置。 use_refresh_token 这是请求详细信息: {{root_url}}/oauth/token {“refresh_token”=>”034a74c085219fb8297fd8ef9b59f080918f” “format”=>:json, “controller”=>”/oauth/tokens”, “action”=>”create”, “grant_type”=>”refresh_token”, “client_id”=>””, “client_secret”=> “”} 错误说明: {:error=>:invalid_grant, :error_description=> “The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.”} 顺便说一句,我的所有api请求身份validation都没有让这个刷新令牌失败。 我想知道我在请求参数中缺少什么。

门卫没有网络视图

我正在使用Rails为移动应用程序编写API,而OAuth似乎是处理用户授权的标准方法。 如果我正确理解了Doorkeeper文档,则需要用户在授予移动应用程序访问权限之前登录该网站。 可能情况下的问题是,确实没有任何网站(可能在未来,但现在只是api)。 我想在ios应用程序中处理用户创建/登录等。 这让我想知道OAuth在这里是否是正确的解决方案?