-
Notifications
You must be signed in to change notification settings - Fork 7
LWS Authorization #45
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
Conversation
elf-pavlik
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM and seems pretty close to Solid-OIDC interop between Client, AS and RS.
lws10-core/Authorization.html
Outdated
| <code>aud</code> (audience) - <strong>REQUIRED</strong>. This claim MUST include the absolute URI supplied by the client | ||
| in the resource parameter. This value will be used to restrict the entities for which the access token is valid. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to mention the realm here as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good idea to connect this to the realm value from WWW-Authenticate. See the change in aa26ca4
Co-authored-by: Ted Thibodeau Jr <[email protected]>
Co-authored-by: Ted Thibodeau Jr <[email protected]>
lws10-core/Authorization.html
Outdated
| The roles in LWS authentication are the same as those defined by OAuth 2.0 Section 1.1 [[!RFC6749]]. | ||
| A storage server is a type of resource server that also conforms to the LWS storage specification. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Following on #43 (comment)
It might be useful to indicate that the Resource Authorization Server is specified here. Not the IdP Authorization Server, especially given that both may be doing token exchange.
Even that this spec is not coupled with any specific authentication suite, it might still be useful to establish this distinction here.
Co-authored-by: elf Pavlik <[email protected]>
|
This was discussed during the #lws meeting on 08 December 2025. View the transcriptAuthorization discussion<acoburn> w3c/lws-protocol#45 <gb> Pull Request 45 LWS Authorization (by acoburn) acoburn: there has been some engagement already on this PR <Zakim> gibsonf, you wanted to ask about AS gibsonf1: on the authz server: you're saying 'this ID token is for this storage'? acoburn: it's an exchange <Zakim> TallTed, you wanted to ask whether the mentions of Solid here are as a prototypical implementation of LWS TallTed: is Solid mentioned as prototypical implementation of LWS? acoburn: yes, indeed, Solid is brought to center the conversation pchampin: why is it better to send it to the AS instead of the storage? acoburn: we mainly gain that we align with OAuth <Zakim> bendm, you wanted to say we also gain separation of concerns (cfr data spaces) <pchampin> that makes sense, thanks a lot bendm: the advantage of passing the ID to the authN server is that you get a separation of concearns bendm: so, eg, you can have a set of storage servers managed by one AS, where you only need to trust the AS, not all individual storage serves acoburn: also, you could have a SAML assertion, that you can exchange for an access token <elf-pavlik> https://elf-pavlik.github.io/lws-auth/view/oidc/?dynamic=sequence elf-pavlik: this sequence diagram <dmitriz> I think this might be adding a bit more complexity than maybe we need? acoburn: about sender-constrained: other than DPOP, we use the audience claim very loosely dmitriz: let's make clear which problem we're solving acoburn: it's fair to ask "what about aligning OAuth with LWS?" dmitriz: what I mostly want to say: I want us to be very clear what extra complexity is really needed acoburn: what elf was talking about: there could be intermediate token exchange, but those will be deployment and use case specific elf-pavlik: everyone says 'use existing authn/authz protocols, don't invent your own' dmitriz: why not just sender-constrain the dpop tokens? elf-pavlik: because dpop is used for access tokens, and access tokens should not cross security domains acoburn: this interacts with the authentication proposal: acoburn: so please have a look that the PRs |
Co-authored-by: Pierre-Antoine Champin <[email protected]>
| </p> | ||
|
|
||
| <p> | ||
| When performing the token exchange grant type, the following additional requirements apply: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not an expert of RFC8693, but it seems to me that some of these requirements are directly "inherited" from RFC8693, while others are specific to LWS. It might be useful to clearly mark the difference.
| </p> | ||
|
|
||
| <pre id="example-authorization-token-presentation" class="example"> | ||
| Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the token is not the same as in the previous example. Is this deliberate?
While it is not clearly stated that this is a running example, I was assuming so far that the examples were making a consistent narrative.`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This wasn't explicitly intended as a running example, but that is a good idea
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #51 for an adjustment of the access token so that this can be viewed as part of an authorization flow in a single session.
| @@ -0,0 +1,49 @@ | |||
| <section id="security-authorization"> | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section contains a number of normative text (MUST, SHOULD). However, the "Security & Privacy Consideration" sections are usually non-normative -- they are "considerations". Furthermore, some (if not all?) of the MUSTs and SHOULDs of this section are in fact repetitions of normative statements contained elsewhere in the spec (which is good).
I suggest to rewrite this section, pointing to the appropriate normative statements rather than repeating them -- and if some of the MUSTs and SHOULDs in this section are not reflected anywhere else, they should be moved, and again simply pointed too in this section.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. I will plan to rework that section after this PR is merged
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #50 for a reworking of the security considerations
Co-authored-by: Pierre-Antoine Champin <[email protected]>
| <h3>OAuth Authorization Server Metadata Registry</h3> | ||
|
|
||
| <p> | ||
| This specification adds the following value to the "OAuth Authorization Server Metadata" registry [[IANA.OAuth.Parameters]] established by [[RFC8414]]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| <h3>well-known URI Registry</h3> | ||
|
|
||
| <p> | ||
| This specification adds the following value to the "Well-Known URIs" registry [[IANA.well-known]] established by RFC 5785 [[RFC5785]]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ebremer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see anything that should block the merge of this.
This is a companion to #43, outlining authorization in LWS.
This is also a class 4 change and will require WG discussion and vote before merging.
This PR follows from discussion on 2025-10-09 during which the attendees described the outline of an authentication mechanism for LWS. As discussed during that meeting, this proposal leaves the definition of a policy language out of scope.
Preview | Diff