Skip to content

Reconsider Client Identifiers in light of OpenID Federation Entities #207

Open

Description

@acoburn

This issue brings in several related issues, including #199, #95, #202 and #201, reframing the issue as the following:

The Solid-OIDC specification currently makes use of globally unique client_id values, formatted as URLs that dereference to a Client Identifier Document (as defined by Solid-OIDC). A very similar mechanism is defined by the (draft) OpenID Connect Federation specification.

This issue is here to discuss the proposal (edited to incorporate #207 (comment)):

The Solid-OIDC specification should drop the current definition of Client Identifiers and associated JSON-LD appendix in favor of adopting the OpenID Connect Federation definition of an Entity Identifier and Automatic Registration

/cc @Sakurann

Activity

  1. elf-pavlik commented on Nov 2, 2022

    @elf-pavlik
    Member

    We probably should also reference 10.1. Automatic Registration

  2. elf-pavlik commented on Nov 2, 2022

    @elf-pavlik
    Member

    In solid/specification#463 (comment) @woutermont suggests

    We can thus perfectly envision an app with WebID / Entity Identifier / ClientID https://example.app, serving an RDF description on its base URL and a JSON Entity Configuration on https://example.app/.well-known/openid-federation.

    I could start a draft PR to the primer which starts moving it in this direction.

  3. woutermont commented on Nov 2, 2022

    @woutermont
    Contributor

    Great! Very much looking forward to implementing this. If I can be of any help drafting/editing/reviewing, let me know!

  4. Sakurann commented on Nov 2, 2022

    @Sakurann

    not sure why is would be an RDF description and not an entity statement as defined in OpenID Federation specification?

  5. Sakurann commented on Nov 2, 2022

    @Sakurann

    +1 to "adopting the OpenID Connect Federation definition of an Entity Identifier and Automatic Registration.

    I think it is one of the best approaches out there right now that meets the new requirements of issuer-holder-verifier model ecosystem, where wallets managing client_id per issuer/AS becomes unrealistic - it is an approach with a significant standardization effort having put in, with implementations on-going and a good trust checking mechanism in place.

    One caveat being that most of the existing Authorization Servers do not support Bring Your Own Cliend_id model

  6. woutermont commented on Nov 3, 2022

    @woutermont
    Contributor

    [@Sakurann:] not sure why is would be an RDF description and not an entity statement as defined in OpenID Federation specification?

    The OpenID Federation does not specify what must be served on dereferencing the Entity Identifier (ClientID) itself; only the Entity Configuration (i.e. self-issued Entity Statement) at /.well-known/openid-federation is required. This leaves us the freedom to let the Entity Identifier (ClientID) itself dereference to an RDF description of the Entity, e.g. a WebID Document.

    We can then have, for example: an App https://ex.app, dereferencing with a 303 to the WebID Document https://ex.app/profile and serving its Entity Configuration on https://ex.app/.well-known/openid-federation.

  7. acoburn commented on Nov 3, 2022

    @acoburn
    MemberAuthor

    For those who may not follow the gitter channel, the Solid Authentication panel plans to hold a meeting to discuss this issue on Monday 7 Nov at 14:00 UTC

  8. selfissued commented on Nov 4, 2022

    @selfissued

    The OpenID Federation does not specify what must be served on dereferencing the Entity Identifier (ClientID) itself; only the Entity Configuration (i.e. self-issued Entity Statement) at /.well-known/openid-federation is required.

    This is not the case. Per https://openid.net/specs/openid-connect-federation-1_0-24.html#name-automatic-registration "In all interactions with the OP, the RP employs its Entity Identifier as the Client ID. The Entity Identifier is the URL from which the OP can fetch the RP's Entity Configuration using the process described in Section 6."

  9. woutermont commented on Nov 4, 2022

    @woutermont
    Contributor

    @selfissued, nothing in that sentence, or in Section 6 refutes my statement. To the contrary: that section explains that the phrasing "from which the OP can fetch ..." must be understood as "which the OP can use as base URL to combine with /.well-known/openid-federation in order to fetch ..." That base URL itself can still serve whatever it wants.

  10. elf-pavlik commented on Nov 5, 2022

    @elf-pavlik
    Member

    @selfissued could you please help us clarify if there would be any problem with following

    • Entity Identifier - https://app.example
    • Entity Configuration - https://app.example/.well-known/openid-federation

    Where resolving the entity identifier can be anything, for example 303 redirect with content negotiation

    Where resolving the entity configuration follows

    6.2. Federation Entity Configuration Response

    The response is an Entity Configuration, as described in Section 3.1. If the Entity is an intermediate Entity or a Trust Anchor, the response MUST contain metadata for a federation Entity.

    3.1. Entity Statement

    An Entity Statement contains the information needed for the Entity that is the subject of the Entity Statement to participate in federation(s). An Entity Statement is always a signed JWT. The subject of the JWT is the Entity itself. The issuer of the JWT is the party that issued the Entity Statement. All Entities in a federation SHOULD be prepared to publish an Entity Statement about themselves (Entity Configuration).

    Entity Statement JWTs MUST be explicitly typed, by setting the typ header parameter to entity-statement+jwt. This is done to prevent cross-JWT confusion (see [RFC8725], section 3.11).

  11. tomhgmns commented on Nov 8, 2022

    @tomhgmns

    Thank you for bringing this to our attention, @acoburn. This would indeed solve the issue described in solid/specification#463 !

  12. selfissued commented on Nov 9, 2022

    @selfissued

    Thanks for the useful discussion. I've filed this issue https://bitbucket.org/openid/connect/issues/1716/clarify-that-entity-statement-paths to clarify that Entity Statements are retrieved from a path that concatenates the Entity Identifier with /.well-known/openid-federation when using automatic registration.

  13. elf-pavlik commented on Nov 14, 2022

    @elf-pavlik
    Member

    Last week we decided to pursuit this direction. This week I'm going to submit a draft PR to the primer to see if we have all the details needed to showcase how a concrete example will work. Once we iron out any problems possibly encountered in that exercise, we can follow up with matching PR to the spec.

    @selfissued Thank you for raising that issue. I've noted it being resolved in https://bitbucket.org/openid/connect/pull-requests/357

  14. elf-pavlik commented on Nov 21, 2022

    @elf-pavlik
    Member

    I created very minimal draft PR #208, with intention to collaborate on it throughout this week and preferably meet next Monday to discuss outcome and next steps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions