You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft-ietf-oauth-attestation-based-client-auth.md
+4-11Lines changed: 4 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -182,7 +182,6 @@ The following content applies to the JWT Claims Set:
182
182
* `exp`: REQUIRED. The `exp` (expiration time) claim MUST specify the time at which the Client Attestation is considered expired by its issuer. The authorization server MUST reject any JWT with an expiration time that has passed, subject to allowable clock skew between systems.
183
183
* `cnf`: REQUIRED. The `cnf` (confirmation) claim MUST specify a key conforming to {{RFC7800}} that is used by the Client Instance to generate the Client Attestation PoP JWT for client authentication with an authorization server. The key MUST be expressed using the "jwk" representation.
184
184
* `iat`: OPTIONAL. The `iat` (issued at) claim MUST specify the time at which the Client Attestation was issued.
185
-
* `nbf`: OPTIONAL. The `nbf` (not before) claim MUST specify the time before which the Client Attestation MUST NOT be accepted for processing.
186
185
187
186
The following additional rules apply:
188
187
@@ -229,7 +228,6 @@ The following content applies to the JWT Header:
229
228
230
229
The following content applies to the JWT Claims Set:
231
230
232
-
* `iss`: REQUIRED. The `iss` (issuer) claim MUST specify client_id value of the OAuth Client.
233
231
* `aud`: REQUIRED. The `aud` (audience) claim MUST specify a value that identifies the authorization server as an intended audience. The {{RFC8414}} issuer identifier URL of the authorization server MUST be used as a value for an "aud" element to identify the authorization server as the intended audience of the JWT.
234
232
* `jti`: REQUIRED. The `jti` (JWT identifier) claim MUST specify a unique identifier for the Client Attestation PoP. The authorization server can utilize the `jti` value for replay attack detection, see [](#security-consideration-replay).
235
233
* `iat`: REQUIRED. The `iat` (issued at) claim MUST specify the time at which the Client Attestation PoP was issued. Note that the authorization server may reject JWTs with an "iat" claim value that is unreasonably far in the past.
@@ -243,9 +241,8 @@ The following additional rules apply:
243
241
244
242
3. The public key used to verify the JWT MUST be the key located in the "cnf" claim of the corresponding Client Attestation JWT.
245
243
246
-
4. The value of the `iss` claim, representing the client_id MUST match the value of the `sub` claim in the corresponding Client Attestation JWT.
247
244
248
-
5. The Authorization Server MUST reject a JWT that is not valid in all other respects per "JSON Web Token (JWT)" {{RFC7519}}.
245
+
4. The Authorization Server MUST reject a JWT that is not valid in all other respects per "JSON Web Token (JWT)" {{RFC7519}}.
249
246
250
247
The following example is the decoded header and payload of a JWT meeting the processing rules as defined above.
251
248
@@ -256,7 +253,6 @@ The following example is the decoded header and payload of a JWT meeting the pro
256
253
}
257
254
.
258
255
{
259
-
"iss": "https://client.example.com",
260
256
"aud": "https://as.example.com",
261
257
"iat": 1300814780,
262
258
"jti": "d25d00ab-552b-46fc-ae19-98f440f25064",
@@ -340,7 +336,7 @@ While usage of the the client attestation mechanism defined by this draft can be
340
336
341
337
The Authorization Server MUST perform all of the checks outlined in [](#checking-http-requests-with-client-attestations) for a received access token request which is making use of the client attestation mechanism as defined by this draft.
342
338
343
-
If the token request contains a `client_id` parameter as per {{RFC6749}} the Authorization Server MUST verify that the value of this parameter is the same as the client_id value in the `sub` claim of the Client Attestation and `iss` claim of the Client Attestation PoP.
339
+
If the token request contains a `client_id` parameter as per {{RFC6749}} the Authorization Server MUST verify that the value of this parameter is the same as the client_id value in the `sub` claim of the Client Attestation.
344
340
345
341
If the Authorization Server supports it, a client MAY instead use the combined client attestation and DPoP mode described in [](#combined-dpop).
346
342
@@ -419,9 +415,7 @@ In order to detect whether this combined mode is being used, the following condi
419
415
420
416
Provided the above conditions are meet the following additional rules apply:
421
417
1. The public key located in the DPoP proof MUST match the public key located in the `cnf` claim of the Client Attestation JWT.
422
-
2. Beyond what is defined in {{RFC9449}} the following additional claims in the DPoP proof apply.
423
-
* `iss`: REQUIRED. Value is the client_id (matching the `sub` of the Client Attestation JWT).
424
-
3. As per {{RFC9449}} the DPoP proof `typ` header value MUST be `dpop+jwt`.
418
+
2. As per {{RFC9449}} the DPoP proof `typ` header value MUST be `dpop+jwt`.
425
419
426
420
// TODO error handling
427
421
@@ -453,7 +447,6 @@ Header:
453
447
454
448
Payload:
455
449
{
456
-
"iss": "https://client.example.com",
457
450
"htm": "POST",
458
451
"htu": "https://as.example.com/token",
459
452
"iat": 1700000000,
@@ -584,7 +577,7 @@ Upon receiving a Client Attestation, the receiving server MUST ensure the follow
584
577
10. The audience claim in the Client Attestation PoP JWT is the issuer identifier URL of the authorization server as described in {{RFC8414}}.
585
578
11. The Client Attestation JWT is fresh enough for the policies of the authorization server by checking the `iat` or `exp` claims.
586
579
12. Depending on the security requirements of the deployment, additional checks to guarantee replay protection for the Client Attestation PoP JWT might need to be applied (see [](#security-consideration-replay) for more details).
587
-
13. If a `client_id` is provided in the request containing the Client Attestation, then this `client_id` matches the `sub` claim of the Client Attestation JWT and the `iss` claim of the Client Attestation PoP JWT.
580
+
13. If a `client_id` is provided in the request containing the Client Attestation, then this `client_id` matches the `sub` claim of the Client Attestation JWT.
0 commit comments