Skip to content
This repository has been archived by the owner. It is now read-only.

Add "resume" to email verification and password reset links #762

Closed
ckarlof opened this issue Jul 17, 2014 · 10 comments
Closed

Add "resume" to email verification and password reset links #762

ckarlof opened this issue Jul 17, 2014 · 10 comments

Comments

@ckarlof
Copy link
Contributor

@ckarlof ckarlof commented Jul 17, 2014

This would be to enable clients to resume oauth flows. We're currently funneling the redirect URI and service (for client_id), but not the state.

@ckarlof
Copy link
Contributor Author

@ckarlof ckarlof commented Jul 17, 2014

This would also require adding state as an optional param in the account creation and password reset and verification email sending API endpoints.

@pdehaan pdehaan added the oauth label Jul 17, 2014
@pdehaan pdehaan added this to the train-19 (Aug 11) milestone Jul 22, 2014
@dannycoates dannycoates modified the milestones: train-19 (Aug 11), train-20 (Aug 25) Aug 11, 2014
@pdehaan pdehaan modified the milestones: train-20 (Aug 25), train-21 Aug 26, 2014
@ckarlof
Copy link
Contributor Author

@ckarlof ckarlof commented Aug 27, 2014

Related to the work we're doing in #784 for Marketplace migrating their existing accounts. If the legacy (migrating) user verifies her email on a second device and continues there, it will be useful to be able to pass the state to Marketplace to allow the user to continue the migration.

@ckarlof
Copy link
Contributor Author

@ckarlof ckarlof commented Sep 3, 2014

@dannycoates, I'd like to get this out in the next train (train-21).

@dannycoates
Copy link
Member

@dannycoates dannycoates commented Sep 4, 2014

The ambiguity of the term "state" is confusing me here. Is this just a "pass-thru" value like the redirectTo or are we storing state in the database? Maybe a more specific name would make it more clear.

@dannycoates
Copy link
Member

@dannycoates dannycoates commented Sep 4, 2014

I'm calling the parameter resume that the caller can set to a tag, 16 char alphanum for now, like service. If we need this to allow more data we can relax the validation.

Does the name and type make sense?

@ckarlof
Copy link
Contributor Author

@ckarlof ckarlof commented Sep 4, 2014

Unfortunately, I'm asking for state because that's what it is called in the OAuth RFC, and it's what we use in the rest of the system. I don't think the RFC specifies any length limits for state. It's totally up to the relier what to put in there, but it should of course be properly URL encoded. In terms of a length limit, I think we should have one, but it needs to be (much) larger than 16. It's entirely possible a client will want to put in an encoded JWT.

The more name translations we need to do in the client, the more confusing it gets. oauthState is a reasonable alternative, but IMO resume will be a confusing renaming to the client side devs.

@dannycoates
Copy link
Member

@dannycoates dannycoates commented Sep 4, 2014

@ckarlof thanks for the context. I think I'm gonna hurl.

@ckarlof
Copy link
Contributor Author

@ckarlof ckarlof commented Sep 4, 2014

No, you're right. Let's go with resume.

After we needed the third param to this, I should have re-evaluated it all. We need service for the server metrics, but if we add resume with a large limit, then the client side can just stick an encoded JWT in there with whatever OAuth params it wants, we won't need to bother you again. ;) Thanks!

@ckarlof ckarlof changed the title Add "state" to email verification and password reset links Add "resume" to email verification and password reset links Sep 4, 2014
@shane-tomlinson
Copy link
Member

@shane-tomlinson shane-tomlinson commented Sep 15, 2014

Related to the work we're doing in #784 for Marketplace migrating their existing accounts. If the legacy (migrating) user verifies her email on a second device and continues there, it will be useful to be able to pass the state to Marketplace to allow the user to continue the migration.

@dannycoates, @ckarlof - To resume on a second device, we need to be able to generate an assertion. Generating an assertion requires a signed certificate, which requires a sessionToken. Neither /recovery_email/verify_code nor /password/forgot/verify_code return a sessionToken. We can get around this by forcing the user to enter their password in the second browser, or we could have those two API calls return a sessionToken. I propose we return a sessionToken.

@shane-tomlinson
Copy link
Member

@shane-tomlinson shane-tomlinson commented Sep 15, 2014

@dannycoates - @johngruen and @ryanfeeley say that it's OK to ask the user for their password in the second client, no new auth-server support needed. Thanks!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

4 participants