-
Notifications
You must be signed in to change notification settings - Fork 5
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
Transmitting a hashed passphrase in OPDS and in an OAuth flow #41
Comments
Here's my proposal:
Regarding the name of this new JSON key, I would suggest using
In OAuth 2.0 this could be transmitted in the Response Document:
In OPDS 2.0 this could be transmitted in the properties of a link:
In the future, we'll be able to use this same JSON key in a user's profile as well. |
I totally agree about using the term "LCP hashed passphrase". The LCP spec itself will be enhanced this way. |
This current proposal doesn't cover use cases where the acquisition of an LCPL license triggers the discovery/exchange of a hashed passphrase through authentication. Let me explain some of the reasons behind this:
|
4.2 of the LCP spec says "There are no requirements for how [the User Passphrase] is to be created." 4.1 talks about prompting the user, but it doesn't look like a requirement. I bring this up because I think we (Library Simplified) do want to have a piece of middleware generate the User Passphrase for an authenticated user and then share the User Key with the user's client so they can decrypt books. If this is a problem I'd like to talk about possible alternatives (having the client generate the User Passphrase) or safeguards (requiring that the client display the User Key in its UI somewhere). |
It's perfectly fine to generate a passphrase as long as it's easily available to the user. You can for example provide the passphrase in the required "hint" URL included in every LCP license. That said in general, I would recommend doing things in the following order:
|
Hello @HadrienGardeur @llemeurfr and @leonardr , I'm pleased to see that the subject comes back on the top of the stack. From Hadrien:
I do not completely agree with Hadrien on the subject of authentication because:
Again, getting hashed key from user authentication result (or whatever you want) must not break the "basic case". This is a device decision :
So I think we can start to define what are the different key discovery use cases, and then define the best ways to answer this use cases. I hope to have the opportunity to discuss the subject directly with you. |
I understand that scenario, but IMO if you go down that road you're no longer part of the LCP ecosystem. It's a different DRM solution based on LCP, but that shouldn't reference LCP in its name.
These two statements somehow contradict one another. My second point was that authentication is a complex matter, with many scenarios that won't always result in a simple UX. I don't think that we should be producing a technical note that will encompass all scenarios (it's impossible), which is why the suggested approach (define a JSON key and highlight how it may be used in an OAuth Response Document or in OPDS 2.0) IMO works best than what was discussed within EDRLab before. |
We should not mix in the same issue discussions about the new LCP key retrieval feature we want to propose to implementers with a discussion about the core LCP passphrase access mechanism, i.e. asking the user. It is true that implementations hiding passphrases from their user cannot market their solution as Readium LCP compliant, as expressed in the LCP Compliance Rules released by EDRLab. @HadrienGardeur, if I understand well, your proposal tries to simplify the protocol and keep only 2 steps: a. authentication (whatever it is) b. direct retrieval of the hashed passphrase. In some cases these two steps are even merged, as the hashed passphrase is given as a response to the OAuth 2.0 authentication. My first question is, what happens if an off-the-shelves OAuth server cannot easily return the hashed passphrase? (I'll take a look at https://github.com/go-oauth2/oauth2) |
Yes you're right, I totally agree, but if I am a "book shop" (or public library) having "LCP friendly" and "not LCP friendly catalog"... what can I do ? Using Adobe (👏 ) ! Hi @llemeurfr, Have a nice week end. |
In order to provide a seamless experience with LCP, a number of organizations are interested in the ability to transmit the hashed passphrase associated to a user/license.
This has been implemented before by:
IMO, we need to cover the following scenarios:
OPDS 2.0 and OAuth could use the same JSON key, while OPDS 1.x requires an XML element and a namespace for it.
cc @leonardr @llemeurfr @RemiBauzac @picheromy
The text was updated successfully, but these errors were encountered: