-
Notifications
You must be signed in to change notification settings - Fork 33
Client Identifier Prefix and URL ambiguity #579
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
Comments
I'm not sure I'm following this part:
I find it highly unlikely that any implementation would already be using (say) |
As the author of StringOrURI, I'll say that our current Client ID syntax is a legal String. No need for changes. I suggest that we close this issue on this basis. |
I am genuinely perplexed by this statement. The current Client ID syntax in unambiguously not conformant to the StringOrURI datatype definition (as @erincandescent alludes in the issue description with "Technically OpenID4VP JWTs are invalid per the JWT spec"). Thus, when used in a claim like aud that's defined as containing a StringOrURI value, something is definitely being violated (though the implications of the violation are unclear). Are you suggesting, as the author of StringOrURI, that the intent was something different than the text in RFC7519? That would suggest an erratum or update to RFC7519. Being the author of something, however, doesn't bestow authority to declare an alternate meaning to something. I've argued elsewhere (a slack or signal or similar group somewhere) that not conforming to RFC7519's StringOrURI definition in aud/iss/sub is probably not really a problem in practice because most implementations (those that I'm aware of anyway) do not seem to do anything to actively enforce it on either the sending or receiving side. A hidden assumption like that is probably somewhat irresponsible too. But feels to me like a different and lesser level. It'd maybe be worthwhile for OpenID4VP to at least mention the contradiction/violation and justification/explanation for it.
I believe the StringOrURI thing is only a part of @erincandescent's issue here though so, even if correct, that basis would not be sufficient. |
That was the name before we tried to broaden it a bit since that mechanism now also allows for platform calls (e.g., other apps), not only calls from the browser. I don't think we have a problem with |
I realise there has historically been a flurry of Client Identifier Prefix/Scheme related issues (#505, #376, #351, #554, #466, ...) but I think there is one issue remaining
There is a longstanding understanding of the necessity within an OAuth 2/OpenID Connect environment of preventing confusion between client IDs and User/Subject IDs. For example, RFC 9068 says
Authorization server implementations may put client IDs in the
sub
(client credentials grant),client_id
(RFC 9068 style access tokens), andaud
(OIDC ID tokens) claims. In addition they may put relying party identifiers, typically URLs, in theaud
cliam of both access tokens and ID tokens.To put it simply: an OAuth 2.0/OIDC implementation may already be using URLs as identifiers in ways that could cause confusion with the client identifier schemes introduced in this specification. As defined at present, there is no way of identifying whether the prefix is a Client Identifier Prefix or a URL scheme.
Except, for all but one of the prefixes defined by this document, it is in fact possible to distinguish these two. RFC 3968 defines a URI scheme as:
All of the Client Identifier Prefixes defined in OpenID4VP other than
origin
contain an underscore, rendering them an invalid URI scheme. If theorigin
prefix were changed to e.g.web_origin
, then the Client ID prefix syntax could be defined as e.g. the regex[a-z][a-z0-9]*(_[a-z0-9]+)+
making the two mutually exclusive.JWT defines the syntax of the identifier claims as StringOrURI:
This implies that no existing valid user can have subject identifiers in conflict with client identifiers defined with a client identifier prefix. Technically OpenID4VP JWTs are invalid per the JWT spec; but OpenID4VP can be said to be extending the specification here.
When @aaronpk brings his client-id-scheme draft back to the oauthwg, presumbaly it would establish a registry of such schemes and note the restriction that they must contain an underscore to render them illegal as URI schemes.
The text was updated successfully, but these errors were encountered: