Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Access Token being checked even on endpoints not calling access_token_required! #9

Open
jalexbrun opened this issue Dec 7, 2017 · 9 comments
Assignees
Labels

Comments

@jalexbrun
Copy link

jalexbrun commented Dec 7, 2017

I call access_token_required! in several of my api endpoints, but not in the UserLogin endpoints.

if I do the following


   mount Api::UserLogin
   mount Api::SomeOtherEndpoint

I get a 401 error when attempting to log in, even though access_token_required! is not being used in that file.

If I do the following instead


   include Grape::OAuth2.api

   mount Api::SomeOtherEndpoint

Then the user login controller is called without checking for an access token.

@gencer
Copy link

gencer commented Dec 7, 2017

Same here. Authentication processed regardless access_token_required! is given or not.

Update: This is probably caused Middleware that inject itself calls Bearer "authorization" method automatically. When that happens, Grape thinks you want authentication.

For the time being, the only workaround is using include in only specific endpoints. I hope we can get @nbulaj' s attention here.

@nbulaj nbulaj added the bug label Dec 11, 2017
@nbulaj nbulaj self-assigned this Dec 11, 2017
@nbulaj
Copy link
Member

nbulaj commented Dec 11, 2017

@johnbrun09 @gencer thanks for the reporting, I will check it ASAP.

@nbulaj
Copy link
Member

nbulaj commented Dec 18, 2017

@johnbrun09 can yo please provide full code listing for the module where you are injecting include Grape::OAuth2.api ? I can't guess if you get a 401 error without the gem injection or with..

@gencer
Copy link

gencer commented Dec 19, 2017

Since no reply made. Let me gave you mine:

  module V2
    class Base < Grape::API
      version 'v2', using: :path, vendor: 'test'
      format :json
      # prefix :api

      include Grape::OAuth2.api
      mount V2::Query
      # ... other mounts

    end
  end
 module V2
   class Query < Grape::API
       # all actions in this class requires authentication. No matter you give :access_token_required! or not.
   end
 end

@nbulaj
Copy link
Member

nbulaj commented Dec 22, 2017

@gencer @johnbrun09 what am I doing wrong?

https://gist.github.com/nbulaj/ff3716d1043143c01b2237c4fa34517a

I've added two endpoints to simple Grape API, one public and one protected (after injecting Grape::OAuth2), and tested it with rackup and curl.

@gencer
Copy link

gencer commented Dec 22, 2017

The gist you prepared is the same scheme I used. Only difference (not wrong) is how we used it.

For me; I use it with Rails5. Maybe Rails has something to do with this or some gem interfere?

Because, I am positively sure that mounting api endpoints after oauth.api, makes all mounts authenticable. But before them is public.

Should I prepare a skeleton/sample project for you maybe?

@nbulaj
Copy link
Member

nbulaj commented Dec 22, 2017

@gencer it will be great, because it's hard for me to find a concrete problem without knowing all the environment.

@nbulaj
Copy link
Member

nbulaj commented Jul 12, 2018

Hi @gencer . Any update here?

@gencer
Copy link

gencer commented Jul 13, 2018

@nbulaj, I completely forgot about this. I was switched to doorkeeper at that time.

However, I just illustrated a sample on my end and it seems it just passes my test. However, I can't remember exactly what was my previous environment like which was failed as this issue stated 🤕.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants