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

Change the token check to use the passed user_id #6451

Merged
merged 1 commit into from
Feb 28, 2017

Conversation

georgeh
Copy link
Contributor

@georgeh georgeh commented Feb 20, 2017

The wpcom servers do not always retrieve the master user_id when signing requests. When the wrong user_id is sent over, the request will fail. During the oauth connection flow, this would result

This change uses the user_id that is encoded in the token format to check requests.

Fixes #5847

Changes proposed in this Pull Request:

  • Update wpcom token checks to use user_id encoded in the token instead of the master_user token

Testing instructions:

  • Find a blog where the Jetpack_Options::get_option( 'master_user' ); is not the same as the id returned by public-api's Jetpack_Data::get_access_token_by_blog_id_user_id( $someBlogId, JETPACK__ANY_USER_TOKEN )
  • Attempt to connect an Oauth application to that blog
  • Confirm that the Oauth flow is successful

Proposed changelog entry for your changes:

The wpcom servers do not always retrieve the master user_id when signing requests. When the wrong user_id is sent over, the request will fail.

This change uses the user_id that is encoded in the token format to check requests.
@briancolinger briancolinger added the [Status] Needs Review This PR is ready for review. label Feb 21, 2017
@jeherve jeherve added General [Type] Bug When a feature is broken and / or not performing as intended [Pri] High labels Feb 21, 2017
@jeherve jeherve requested a review from lezama February 21, 2017 17:14
@lezama lezama requested a review from mdawaffe February 21, 2017 18:59
@lezama
Copy link
Contributor

lezama commented Feb 21, 2017

Thanks for working on this @georgeh!

I think this is safe to go but let's wait on @mdawaffe advice!

Copy link
Member

@mdawaffe mdawaffe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is just one more (the last?) holdover from when only one user per Jetpack site could be connected to WordPress.com.

As you point out, on WordPress.com, we sometimes look for any non-blog token to sign the request. This ensures that the site is fully connected. (Having only a blog token could mean the site is in some half-way state.) In ye olde times, looking for any non-blog token would always return nothing or the master user's token. So on the Jetpack side, we could always check JETPACK_MASTER_USER.

Those days are long gone, and we can't depend on any specific behavior when looking for "any non-blog token".

This change makes sense, though it feels a little odd to use an arbitrary (even if now consistent) user token to do all this. I don't think it has any security concerns, though. Something may break if the Jetpack site loses its half of the connection for that user, though, and WP.com still tries to sign things with that user's details.

@lezama, @ebinnion, I take it SSO and this patch play nicely together?

At any rate, looks good to me.

Copy link
Member

@zinigor zinigor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, so I think that I'm either testing it incorrectly, or there's a problem. My setup is that I have a Jetpack site with two connected administrators. One of them is the master user, the other one is just an administrator.

So when I try to publish a document from StackEdit.io, it works with the master user, but doesn't work with the second user. By using error_log in class.jetpack.php I can say that $environment seems to always have 1 as the user ID, therefore get_access_token always returns the token for the master user.
Can you tell me if my testing is wrong, or is it a problem with the code?

Copy link
Member

@zinigor zinigor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, finally got it to work by switching a master user by installing Jetpack 4.1 :) Works well, now for all users, not only for the master.

@zinigor zinigor added [Status] Ready to Merge Go ahead, you can push that green button! and removed [Status] Needs Review This PR is ready for review. labels Feb 28, 2017
@georgeh georgeh merged commit 87e132c into Automattic:master Feb 28, 2017
@matticbot matticbot removed the [Status] Ready to Merge Go ahead, you can push that green button! label Feb 28, 2017
jeherve added a commit that referenced this pull request Feb 28, 2017
dereksmart pushed a commit that referenced this pull request Feb 28, 2017
* Changelog: update stable tag and move changelog to changelog.txt

Also remove old releases from readme.txt to keep the changelog tab short.

* Changelog: add #5883

Also update the filter's docblock to match new version.

* Changelog: add #5938

* Changelog: add #6298

* Changelog: add #3405

* Changelog: add #5941

* Changelog: add #6239

* Changelog: add #6281

* Changelog: add #6303

* Changelog: add #6018

* Changelog: add #6300

* Changelog: add #6296

* Changelog: add #6130

* Changelog: add #6292

* Readme: remove extra "on".

* Changelog: add #6307

* Changelog: add #3297

* Changelog: add #6275

* Changelog: add #6321

* Changelog: add #6297

* Readme: update the support forum link anchor.

Anchor changed when WordPress.org forums were updated to bbPress 2

* Readme: update list of a12s, it wasn't up to date anymore!

* Changelog: add #6338

* Changelog: add #6337

* Changelog: add #6335

* Changelog: add #6333

* Testing List: first version of the 4.7 testing list.

* Changelog: add #6332

* Changelog: add #6325

* Changelog: add #6326

* Changelog: add #6339

* Changelog: add #6342

* Changelog: add #6343

* Changelog: add #6346

* Changelog: add #6347

* Changelog: add #6279

* Changelog: add #6306

* Changelog: add #6312

* Changelog: add #6316

* Changelog: add #6171

* Changelog: add #6317

* Changelog: add #6246

* Changelog: add #6263

* Changelog: add #4220

* Changelog: add #5888

* Changelog: add #3406

* Changelog: add #3637

* Changelog: add #6320

* Changelog: add #5992

* Changelog: add #6322

* Changelog: add #6324

* Changelog: add #6352

* Changelog: add #6355

* Changelog: add #6360

* Changelog: add #6362

* Changelog: add #6369, #6382

* Changelog: add #6370

* Changelog: add #6375

* Changelog: add #6383

* Changelog: add #6384

* Changelog: add #6386

* Changelog: add #6395

* Changelog: add #6403

* Changelog: add #6406

* Changelog: add #6418

* Changelog: add #6419

* Changelog: add #6434

* Changelog: add #6446

* Changelog: add #6006

* Changelog: add #6096

* Changelog: add #6399

* Changelog: fix typo.

@see #6331 (comment)

* Changelog: add #6440

* Changelog: add #6443

* Changelog: add #6445

* Changelog: add #6463

* Changelog: add #6468

* Changelog: add #6471

* Changelog: add #6474

* Changelog: add #6480

* Changelog: add #6497

* Changelog: add #6499

* Changelog: add #6514

* Changelog: add #6267

* Changelog: add #5940

* Changelog: add #6492

* Changelog: add #5281

* Changelog: add #6327

* Changelog: add #6451

* Changelog: add #6525

* Changelog: add #6530
@georgeh georgeh deleted the fix/wpcom-token-check branch February 1, 2018 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
General [Pri] BLOCKER [Type] Bug When a feature is broken and / or not performing as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants