Closed
Bug 1157578
Opened 10 years ago
Closed 10 years ago
create production FxA OAuth client credentials for Pocket
Categories
(Cloud Services :: Operations: Miscellaneous, task, P1)
Cloud Services
Operations: Miscellaneous
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: rfkelly, Unassigned)
References
Details
(I'm creating this bug for tracking purposes; we're not yet ready to actually provide production credentials to Pocket.)
Prior to Firefox 38.0.5 release, we'll need to provision production oauth client credentials for the pocket integration. There will be two distinct sets of credentials, one for use in mobile apps and one for the web. We have the following set up in our development environment:
Web credentials:
name: "Pocket web dev"
client_id: "749818d3f2e7857f"
redirect_uri: "https://firefoxauth.dev.readitlater.com/ff_auth"
Mobile credentials:
name: "Pocket mobile dev"
client_id: "7377719276ad44ee"
redirect_uri: "pocket://oauth/fxa"
As with previous integrations, let's use the same client_id for the production credentials but change the secret etc. Items we'll need to confirm before provisioning include:
* Final name, redirect_uri, and image_uri for each client
* GPG keys or similar to securely provide client secrets to the pocket devs
Reporter | ||
Comment 1•10 years ago
|
||
ni? :edwong for linking to an appropriate tracking meta-bug
Flags: needinfo?(edwong)
Comment 2•10 years ago
|
||
FYI - I am the contact person on the Pocket side for these credentials.
Comment 3•10 years ago
|
||
from IRC - rfkelly to coordinate Oauth creds handoff. We'd like to get Pocket using the PROD OAuth server ASAP as the longer we wait to switch, the more risk of late issues. There are two changes requested that will not hit PROD server till 5/11 but they are not core functionality so they shouldn't block the switch over.
Flags: needinfo?(rfkelly)
I've emailed matt requesting his gpg fingerprint for secure transmittal of the credentials when they are created.
Reporter | ||
Comment 5•10 years ago
|
||
For FxA we have three levels of deployment - "dev" which you've already got running, "stage" for testing releases in a very-close-to-production mannger, and obviously "prod" for production.
Matt, do you have a staging environment on the pocket side that would need additional credentials, or are you happy with credentials just for dev and prod environments?
:ckolos, to follow up on your question from IRC, are you suggesting we provision two independent sets of credentials for our prod environment? Like this:
pocket dev env ==> production FxA stack
production pocket ==> production FxA stack
I'm not sure I see the value in using separate-but-equally-powerful credentials in this case, but could easily be convinced. Sorry if I misunderstood your question.
Flags: needinfo?(rfkelly)
Flags: needinfo?(matt)
Flags: needinfo?(ckolos)
Comment 6•10 years ago
|
||
Ryan -
Currently, just dev and production is sufficient for us. With that said, for load testing purposes it might make sense to have a "staging" set of credentials.
So if it isn't too much work or hassle, would be great to have the three sets of credentials to mirror your setup and I can configure things on our side appropriately.
Flags: needinfo?(matt)
Reporter | ||
Comment 7•10 years ago
|
||
OK, it sounds like we should go ahead with both stage and prod credentials, for both "Pocket web dev" and "Pocket mobile dev" client ids. So we'll need the following two entries in both stage and prod (sorry if I'm belabouring the details, but over-communication is better than under- at this stage):
// web credentials
{
name: "Pocket",
client_id: "749818d3f2e7857f", <-- this will be the same on both stage and prod
secret: TODO, <-- but this will be different, obviously
image_uri: "", <-- empty for now; in future could link to pocket logo
redirect_uri: TODO, <-- Matt to provide required prod web redirect
canGrant: false,
whitelisted: false, <-- this part is super important, but see discussion below...
}
// mobile credentials
{
name: "Pocket Mobile", <-- this will appear on our permission screen; text ok?
client_id: "7377719276ad44ee",
secret: TODO,
redirect_uri: "pocket://oauth/fxa",
image_uri: "",
canGrant: false,
whitelisted: false,
}
There's a slight hitch here w.r.t the "whitelisted" field. We need this to distinguish between trusted Mozilla-hosted reliers and third-party reliers on the web. It will trigger (among other things) display of a secondary permission screen and terms-of-service links.
Problem is, it currently doesn't work in prod. Untrusted reliers currently get a 500 error on all requests. We're adding this support into our oauth server right now but it's not deployed yet:
https://github.com/mozilla/fxa-oauth-server/pull/248
We have two ways to proceed:
1) Provision pocket as whitelisted=true for now, and revisit this when the above hits production. This would give pocket the ability to silently request additional scopes in our production environment, and would mean that we're not really testing in production configuration.
2) Wait for the above to deploy before provisioning the credentials. This introduces delay in integration testing. It's currently scheduled to be deployed week of May 18, and we'll probably want to bake production URLs into Firefox config before then.
I'm leaning towards (1) because IIRC we don't have any high-value additional scopes that could be requested anyway, and because we actually *do* trust pocket to do the right thing here :-)
Thoughts anyone?
ni? Matt to provide the production redirect_uri
Flags: needinfo?(matt)
Comment 8•10 years ago
|
||
Ryan -
(1) redirect_uri
For production use: getpocket.com/ff_auth
For staging use: staging.getpocket.com/ff_auth
NOTE: Staging server is not live yet.
(2) Can I provide you a link to a logo for the image_uri? If yes, any specifics on specs required?
(3) Re: the name for the mobile credentials - any reason we can't just call it Pocket? Does it need to be different from the web-based?
Flags: needinfo?(matt) → needinfo?(rfkelly)
Reporter | ||
Comment 9•10 years ago
|
||
> (3) Re: the name for the mobile credentials - any reason we can't just call it Pocket?
> Does it need to be different from the web-based?
I don't see any reason they can't both be called "Pocket". Sean, you're the most familiar with the code details there, can you please confirm?
Flags: needinfo?(smcarthur)
Reporter | ||
Comment 10•10 years ago
|
||
> (2) Can I provide you a link to a logo for the image_uri? If yes, any specifics on specs required?
I don't believe we're actually displaying this anywhere yet, but it's here as a placeholder for future use.
Flags: needinfo?(rfkelly)
Comment 11•10 years ago
|
||
There's no code restrictions on the name (other than a max size). The name's purpose is to be displayed in the login/permission UI, such as "Sign in to continue to {client.name}".
It's also shown in the oauth-console, but so is the client_id, so it's possible to distinguish via id.
Flags: needinfo?(smcarthur)
I just want to summarize what I'm seeing here so I have a clear understanding.
Credentials for Pocket's stage browser/mobile integrations are needed in our stage fxa-oauth db only.
Stage client ID's are not needed in Mozilla's prod Oauth DB b/c Pocket will not be testing their staging code against our prod db.
Credentials for Pocket's production browser/mobuile integrations are needed.
These production credentials will only be used for the final shipping software/integration.
Do I have that correctly?
Flags: needinfo?(ckolos)
Reporter | ||
Comment 13•10 years ago
|
||
In discussion with :ckolos, he convinced me there's security value in provisioning separate pairs of "production only" and "dev production" credentials. The former would only ever be used for production pocket deploys to talk to the production fxa stack, never anywhere else. Which gives us a total of six new credentials pairs to create:
// web credentials in stage fxa db
{
name: "Pocket",
client_id: "749818d3f2e7857f",
secret: XXX,
image_uri: ""
redirect_uri: "https://staging.getpocket.com/ff_auth",
canGrant: false,
whitelisted: true, <-- let's push ahead with this for now, change to false later
}
// mobile credentials in stage fxa db
{
name: "Pocket",
client_id: "7377719276ad44ee",
secret: XXX,
redirect_uri: "pocket://oauth/fxa",
image_uri: "",
canGrant: false,
whitelisted: true,
}
// web *dev* credentials in prod fxa db
{
name: "Pocket (dev)",
client_id: "749818d3f2e7857f",
secret: XXX,
image_uri: ""
redirect_uri: "https://firefoxauth.dev.readitlater.com/ff_auth",
canGrant: false,
whitelisted: true,
}
// mobile *dev* credentials in prod fxa db
{
name: "Pocket (dev)",
client_id: "7377719276ad44ee",
secret: XXX,
redirect_uri: "pocket://oauth/fxa",
image_uri: "",
canGrant: false,
whitelisted: true,
}
// web *production* credentials in prod fxa db
{
name: "Pocket",
client_id: TODO, <-- brand new id for production use only
secret: XXX,
image_uri: ""
redirect_uri: "https://getpocket.com/ff_auth",
canGrant: false,
whitelisted: true,
}
// mobile *production* credentials in prod fxa db
{
name: "Pocket", <-- both of these have production name field "Pocket"
client_id: TODO,
secret: XXX,
redirect_uri: "pocket://oauth/fxa",
image_uri: "",
canGrant: false,
whitelisted: true,
}
This will allow pocket dev => fxa prod testing during initial development, with a secure final cutover to exclusively-prod-use-only credentials for final release.
:ckolos, please sanity-check and if this matches your description, make it so.
Comment 14•10 years ago
|
||
Ryan -
Please change "web *dev* credentials in prod fxa db" redirect to:
https://firefox.dev.readitlater.com/ff_auth
?
Reporter | ||
Comment 15•10 years ago
|
||
Thanks Matt, :ckolos please make the above adjustment
Pocket dev for FxA Prod creds sent
pocket Dev browser (to be deleted when Pocket goes live)
- {
id: "749818d3f2e7857f",
name: "Pocket (dev)",
hashedSecret: "XXX",
imageUri: "",
redirectUri: "https://firefox.dev.readitlater.com/ff_auth",
whitelisted: false,
canGrant: false
}
# Pocket Dev mobile (to be deleted when Pocket goes live)
- {
id: "7377719276ad44ee",
name: "Pocket (dev)",
hashedSecret: "XXX",
redirectUri: "https://firefox.dev.readitlater.com/ff_auth",
imageUri: "",
whitelisted: false,
canGrant: false
}
Comment 18•10 years ago
|
||
Ryan / Chris -
Apologize if this isn't the right place to ask.
Next week, we are going to "Pref on the Pocket toolbar button in Nightly".
The week after we are going to uplift to beta.
Which fxa servers should I be hitting for each of these? I just want to make sure I have the right credentials setup.
For the "uplift to beta" - we will want the redirect_uri to be to getpocket.com - there is enough load there that I won't be comfortable having that all go to our dev environment.
Flags: needinfo?(rfkelly)
Flags: needinfo?(ckolos)
Reporter | ||
Comment 19•10 years ago
|
||
(Matt and I chatted about this on IRC; summary below)
> Next week, we are going to "Pref on the Pocket toolbar button in Nightly".
Since this will be seen by end-users, I think it has to talk to the production FxA endpoint. Anything else would be too confusing. So it will depend on whether we want to use readitlater.com or getpocket.com on the pocket side, and that will settle the choice of whether to use the "dev-to-prod" or "production only" credentials. Matt will follow up on the desired outcome here.
> For the "uplift to beta" - we will want the redirect_uri to be to getpocket.com
In which case, the only worthwhile option is to start using the production-only credentials at this point, with production pocket talking to production fxa.
Flags: needinfo?(rfkelly)
Flags: needinfo?(ckolos)
Comment 20•10 years ago
|
||
Ryan - I confirmed this evening that the "Pocket Dev to Prod FxA" credentials I have work properly.
I am waiting on Chris to provide "Pocket Prod to Prod FxA" credentials so haven't tested those yet. I sent him an email.
Based on the successful test to Production FxA, I would like to move forward with using "Pocket Prod to Prod FxA" when we launch "pref on Nightly" next week.
Reporter | ||
Comment 21•10 years ago
|
||
OK, great! I also spotted this in Bryan's latest status update:
> Wed 6: Pref on the Pocket toolbar button in Nightly
> -- This step requires a Pocket server to replace the current firefox.dev.readitlater.com
Which matches what you suggest above about doing this on production getpocket.com in Nightly.
:ckolos, do you think we'll have FxA train-36 in production before this date? ISTM we can proceed either way, but worth sanity-checking how the dates line up.
:rfkelly - If I can get a go ahead on train-36 by Tuesday morning, I can have train-36 live by Wednesday.
That said, I need an exact time/date to "cut over" the credentials used in the prod db for "release"; right now, only developer credentials are available in prod.
Flags: needinfo?(rfkelly)
Comment 23•10 years ago
|
||
:ckolos :rfkelly My plan is to move the Pocket backend code that supports everything to our production servers on Monday.
I can test from there with the dev credentials. Once I confirm everything is working perhaps we can define a cut over time for Tuesday?
Reporter | ||
Comment 24•10 years ago
|
||
> Once I confirm everything is working perhaps we can define a cut over time for Tuesday?
Yes, let's aim to do this on the Tuesday, so it's in place before things pref on in Nightly on the Wednesday.
:ckolos if I'm interpreting you correctly, does this men the exiting 'dev to prod' credentials will stop working after the cutover?
Flags: needinfo?(rfkelly)
:rfkelly - yes, that's correct; the "Prod-dev" and "Prod-release" creds share the same client ID and they can't co-exist in the database at the same time.
Comment 26•10 years ago
|
||
:rfkelly - do we need a client bug to land the prod URL in nightly?
Flags: needinfo?(rfkelly)
Comment 27•10 years ago
|
||
:rfkelly :ckolos
How hard is it for you to do the switch over form "Prod-dev" to "Prod-release"? I'm getting ready to release our backend code to getpocket.com and I'm realizing I don't have a getpocket.com -> FxA Dev set of keys. I only have getpocket.com -> FxA Prod - and those aren't live yet as only the firefox.dev -> FxA Prod are live.
Can we:
(a) Do the cut over on the keys now?
(b) Provide me with keys for getpocket.com -> FxA Dev?
After that I can have:
firefox.dev to FxA Dev for testing anything new internally / outside of builds
getpocket.com to FxA Prod for Nightly + Beta + Prod browser builds
Flags: needinfo?(ckolos)
Comment 28•10 years ago
|
||
from IRC - mattk is going to move over the PROD OAuth server at 10am PDT.
Comment 29•10 years ago
|
||
Update:
- Ryan setup Pocket Prod to Firefox Dev certs for me to use.
- Our backend code has been pushed to getpocket.com and I've confirmed that Firefox Auth is working using the Firefox Dev endpoints.
- Per conversation with Edwin - if you turn on the Pocket Prod to Firefox Prod certificates tomorrow morning, I will then update getpocket.com to use those certs at 10 AM PT.
None of our servers are currently using the Pocket Dev to Firefox Prod certs, so timing isn't critical - just let me know when the switch is made on your end.
Flags: needinfo?(ckolos)
:mattk - will do. Please plan on this being active @10:01 AM PDT.
Reporter | ||
Comment 31•10 years ago
|
||
> do we need a client bug to land the prod URL in nightly?
Per IRL discussion, yes, :edwong to file.
Flags: needinfo?(rfkelly)
As of 10:00 PDT the Production Oauth creds for Pocket are live.
Comment 33•10 years ago
|
||
And Pocket servers are correctly pointing to FxA Prod.
Comment 34•10 years ago
|
||
I'm going to close this out - we've confirmed the flow is working with prod servers, (though not directly from the panel sign in with firefox button)
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Comment 35•10 years ago
|
||
Discovered an issue this AM where the mobile credentials were pointing to the wrong redirect_url. They were hitting, getpocket.com/ff_auth instead of pocket://oauth/fxa .
All mobile certificates should always point to: pocket://oauth/fxa
:ckolos and I discussed in IRC and he is updating.
Updated•10 years ago
|
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Updated•10 years ago
|
Priority: -- → P1
I think so; I believe mattk has not had any futher issues and his email seems to indicate they are working now.
Status: REOPENED → RESOLVED
Closed: 10 years ago → 10 years ago
Flags: needinfo?(ckolos)
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•