-
Notifications
You must be signed in to change notification settings - Fork 14
Description
This is a description for an issue the Connect & DCP WG are liaising on and want to discuss at tomorrow's Connect WG call.
Background
OpenID Federation defines that Entity Identifiers are used as Client ID values when Automatic Registration is used. These are https URLs. There are other proposed specifications that also use https-based Client IDs. We need a way to clearly indicate which specification is in use.
OID4VP attempted to solve this (see openid/OpenID4VP#263) - it was hoped in a way that did not affect federation and would also be acceptable to OAuth WG.
Unfortunately the solution agreed there (of reserving https to always mean Federation) is not acceptable to the OAuth WG to go into an OAuth specification - it was unfortunately not known at the time that there are at least two specifications (Federation, W3C IndieAuth and/or OAuth Client ID Metadata Document) that use https client ids and define them in different ways with different security properties and both have significant production deployments. There is also currently nothing to stop further uses of https client ids being created - for example OID4VP at one point used https client ids to mean x509_san_uri, and I’m aware of at least one further proposal, and suspect there are more we’re unaware of.
Where we are now
Direction of movement at OAuth WG is that https:// client ids will not be reserved to mean only OpenID Federation as this would create a problem for the other ecosystems that also already use https client ids in production. A proposal for a way forward has been discussed at two IETF meetings: https://github.com/aaronpk/oauth-client-id-prefix - hope is that this draft can be updated to reflect a consensus of all 3 working groups (Connect, DCP, OAuth) on how to solve problem and will then be adopted by OAuth WG, potentially creating an IANA registry for Client ID prefixes that allows each specification (Federation, OID4VP, OAuth Client ID Metadata Document) to register an unambiguous prefix to indicate their trust establishment mechanism is in use - whilst also allowing a backwards compatibility option to use https to allow an easier path for existing production deployments.
The OAuth WG is (in my personal opinion) fairly likely to adopt & publish OAuth Client ID Metadata Document which would allow the use of https client ids for something other than Federation, due to the need to have a compatibility path for existing deployments.
A further change to OID4VP needs to be made before OID4VP goes to final imminently, but it is not yet agreed what that change would be. (The possible changes range from documenting the problems that arise from multiple specifications using unprefixed https client ids but stating it is for the OAuth WG to fully solve, through to fully solving it.)
Decision the Connect Working Group needs to make
Moving forward with https:// client ids being the only way to specify the use of federation causes two concrete issues:
-
There is no robust, simple way for ecosystems that use https urls to mean other trust mechanisms to later upgrade to Federation. (You could potentially design a bespoke solution for each situation, but doing so is likely to be less robust and potentially introduce new security issues / potential attacks, and some of the solutions would look exactly like the text in a revision OID4VP that was rejected for being overly fragile/complex or potentially resulting in authorization server’s become DoS attack amplifiers) This is more problematic in the situation in OID4VP where in most cases there is no metadata available to determine how the authorization server will interpret a request, as verifiers generally don’t know which wallet will respond to the request.
-
The ambiguity between the different mechanisms that use https is potentially a security issue in the Federation spec. For example, if a federation client receives an id_token with “aud”: “https://rp.example.com/” the client has no guarantee as to how the authorization server authenticated it. The authorization server could have used the lower security mechanism meaning the response is not to a request the client sent. (This doesn’t apply only to id tokens, many JWTs use only the client_id to indicate sender/receiver/intended subject. This wasn’t found by the formal security analysis of the Federation specification as the other specifications using https client ids were not in scope. [confirmed with the team at Stuttgart])
There seem to be solutions available that have simple low effort migration paths for existing ecosystems that have already deployed Federation, if/when those ecosystems want to move to align with federation ‘final’.
Does the Connect WG want to find a solution for this before OID4VP goes final? Or delay till before Federation goes Final? Or move to final despite these known issues and misalignment with OAuth WG? Do we want this problem to be solved consistently & interoperability or per specification / ecosystem?