门卫撤销令牌

我在我的应用程序中实现了OAuth 2,并且我已经有登录/刷新令牌,但我在注销时遇到了一些麻烦。

我有这门由门卫生成的路线:

Routes for Doorkeeper::Engine:
          authorization GET    /authorize(.:format)                   doorkeeper/authorizations#new
          authorization POST   /authorize(.:format)                   doorkeeper/authorizations#create
          authorization DELETE /authorize(.:format)                   doorkeeper/authorizations#destroy
                  token POST   /token(.:format)                       doorkeeper/tokens#create
           applications GET    /applications(.:format)                doorkeeper/applications#index
                        POST   /applications(.:format)                doorkeeper/applications#create
        new_application GET    /applications/new(.:format)            doorkeeper/applications#new
       edit_application GET    /applications/:id/edit(.:format)       doorkeeper/applications#edit
            application GET    /applications/:id(.:format)            doorkeeper/applications#show
                        PUT    /applications/:id(.:format)            doorkeeper/applications#update
                        DELETE /applications/:id(.:format)            doorkeeper/applications#destroy
authorized_applications GET    /authorized_applications(.:format)     doorkeeper/authorized_applications#index
 authorized_application DELETE /authorized_applications/:id(.:format) doorkeeper/authorized_applications#destroy

我想要做的是撤销服务器中的令牌,因此我认为我必须调用的服务是“删除/授权”权限? 但我尝试了很多不同的方式来使用这些服务,我只是重新发现错误。

顺便说一句,我不知道撤销服务器中的令牌是正确的还是只从应用程序中删除它?

PS:我在我的客户端使用iOS 7中的AFNetworking 2。


这并没有真正回答这个问题,但提供了相关信息。

我有问题,门卫会在对有效用户/密码组合进行任何事先授权后,验证资源所有者密码凭证授予请求上的任何用户/密码组合。 情景是:

  • 客户端使用有效的用户名和密码获得授权
  • 客户端重置/忘记授权令牌以结束授权
  • 客户端可以使用任何用户名和密码获得新的授权,为原始用户授权。
  • 这原来是Warden让授权用户进入一个会话,我的iOS客户端很高兴地为我维护会话。

    我通过让管理员在认证后立即注销用户来解决这个问题。 这是有效的,因为根据授权请求,OAuth获取当前用户与授权令牌一起存储。 它不需要让用户在会话中。

    以下是来自config / initializers / doorkeeper.rb。 最后两行在授权后进行注销。

    # called for Resource Owner Password Credentials Grant
      resource_owner_from_credentials do
      request.params[:user] = {:email => request.params[:username], :password => request.params[:password]}
      request.env["devise.allow_params_authentication"] = true
      user = request.env["warden"].authenticate!(:scope => :user)
      env['warden'].logout
      user
    end 
    

    如果我正确地得到你的问题是1)用户转到客户端应用程序,单击登录2)客户端应用程序从oauth-server获取身份验证。 此时用户需要输入用户名/密码3)用户在客户端应用程序中单击注销4)用户在客户端应用程序中再次单击登录,并使用旧的已验证令牌自动签名,而不是再次询问用户名和密码,这是你想要什么。

    如果这是你的问题,那就与cookies有关。 检查每个请求中发送的Cookie。 在我的情况下,我不得不添加一行

    cookies.delete '_oauth_server_name_session'

    然后它就起作用了。 您可以首先确认这是一个Cookie问题,因为如果您切换浏览器(或进入隐身模式),则不会发生这种情况。

    链接地址: http://www.djcxy.com/p/75729.html

    上一篇: Doorkeeper Revoke Token

    下一篇: Using pynids on multiple pcaps