[wp-trac] [WordPress Trac] #39500: REST API 401 Due to Logged Out User Cookie Regardless of Authentication Data

WordPress Trac noreply at wordpress.org
Fri Jan 6 08:35:58 UTC 2017


#39500: REST API 401 Due to Logged Out User Cookie Regardless of Authentication
Data
--------------------------+-----------------------------
 Reporter:  dominic_ks    |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  REST API      |    Version:  4.7
 Severity:  normal        |   Keywords:
  Focuses:  rest-api      |
--------------------------+-----------------------------
 Hello,

 I'm reporting this as a bug as I cannot see anywhere in the docs that this
 is intended / expected behaviour:


 '''Description:'''
 When sending requests to the WordPress REST API that include both a
 WordPress cookie AND OAuth credentials, authentication is based on the
 WordPress cookie and the OAuth credentials are ignored.

 This results in
  - Potentially unexpected access if the user is logged in
  - Requests rejected with "401: User is not logged in" error response
 regardless of valid OAuth credentials

 I am currently using WordPress 4.7 with the WP REST API - OAuth 1.0a
 Server plugin enabled.

 '''Background:'''
 I came up against an issue while developing an OAuth1.0 flow using
 javascript intended for use when creating Phonegap applications.

 The issue arose once I had actually managed to fully authenticate a user,
 I was then unable to make a simple GET request to via the Phonegap test
 app, even though copying and pasting the very same request into a browser
 straight after receiving 401: User is not logged in, the request worked
 just fine, e.g.

 http://my-domain.co.uk/wp-json/wp/v2/users/me?my_auth_params=etc

 After much investigation, I found that the Phonegap test app was sending a
 WordPress cookie with the $.ajax request where the browser was not.

 I did look into whether I could prevent this cookie being sent to no
 avail.

 Finally, I found that if I generated the request as normal (including with
 my-domain.co.uk) but then actually send the request to http://cookieless-
 my-domain.co.uk/.... then the request was successful.

 For the record, generating the request to http://cookieless-my-
 domain.co.uk/.... up front resulted in signature errors.

 My assumption is that the cookie has been set here when using the Phonegap
 InAppBrowser plugin to complete step 2 of the OAuth process, or, happens
 to be present in a browser on my phone.

 '''Conclusion:'''
 Based on my experience here, it seems that it can't be predicted whether a
 client or device will have or send a cookie. If a request is sent with
 valid OAuth credentials I would suggest these should be prioritised for
 processing the request.

--
Ticket URL: <https://core.trac.wordpress.org/ticket/39500>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list