Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions draft-ietf-oauth-client-id-metadata-document.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ informative:
- name: V. Dzhuvinov
org: Connect2id
I-D.draft-ietf-oauth-attestation-based-client-auth:
I-D.draft-ietf-oauth-spiffe-client-auth:
RFC7523:
RFC9111:

Expand Down Expand Up @@ -262,9 +263,12 @@ Some restrictions on `redirect_uris` can make developer usage of Client ID Metad
## Client Authentication {#client_authentication}

Since the client establishes its own registration data at the authorization server,
prior coordination of client credentials is not possible. However, clients MAY establish
prior coordination of client credentials is not possible. However, establishing
credentials at the authorization server by using authentication methods that use
public/private key pairs, by publishing the public key in their metadata document.
public/private key pairs is possible by publishing the public key in their metadata document.

Clients that are capable of maintaining private key material and performing client authentication
SHOULD do so with an acceptable method.
Comment on lines +270 to +271
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just explicitly say "e.g., private_key_jwt" ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to leave the door open for other methods in the future

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


For example, the client MAY include the following properties in its metadata document
to establish a public key and advertise the `private_key_jwt` authentication method defined in {{OpenID}}:
Expand All @@ -279,7 +283,10 @@ to establish a public key and advertise the `private_key_jwt` authentication met
This establishes this client as a confidential client, and any communication with
the authorization server MUST include client authentication of the registered type.

The particular method of how the client manages the private key is out of scope of this specification, but may include manual provisioning or methods such as Attestation Based Client Authentication [I-D.draft-ietf-oauth-attestation-based-client-auth]. For example, the client developer could run a Client Attester Backend, using a native application's platform-specific APIs to authenticate to the backend service, where the private key corresponding to the `jwks_uri` key is managed by the backend service. This would allow a mobile app to request JWTs from the backend service that the mobile app could then use as client authentication to the authorization server.
When a client declares `token_endpoint_auth_method` as `private_key_jwt`, the authorization server
MUST require client authentication according to {{Section 2.2 of RFC7523}} using the corresponding key published in the client's metadata document.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes it sound like we MUST use jwks in the CIMD, instead of jwks_uri (which I think we prefer?)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah that was not my intent. maybe "published or referenced"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd probably just say "referenced", since embedding is a reference in a way.. maybe "discovered from the client's metadata document" ?


The particular method of how the client manages the private key is out of scope of this specification, but may include manual provisioning or methods such as "Attestation Based Client Authentication" [I-D.draft-ietf-oauth-attestation-based-client-auth] or "OAuth SPIFFE Client Authentication" [I-D.draft-ietf-oauth-spiffe-client-auth]. For example, the client developer could run a Client Attester Backend, using a native application's platform-specific APIs to authenticate to the backend service, where the private key corresponding to the `jwks_uri` key is managed by the backend service. This would allow a mobile app to request JWTs from the backend service that the mobile app could then use as client authentication to the authorization server.


## Changes in Client Metadata
Expand Down