Hi Frederick,

thanks very much for your review! Here is our feedback:

> As written, the spec does not normatively require replay protection for PoPs to actually be implemented by the verifier. Is this intentional?

That is intentional and mirrors DPoP's design by giving the server the freedom to choose to cache previously seen values (e.g., jti) or not. We are recommending Replay detection in this draft, but do not want to mandate it to give deployments the freedom.

> Even though trust management is explicitly out of scope, I think there should be a normative statement that an AS which trusts multiple attesters must somehow scope the accepted client_ids to each attester to prevent multiple attesters from asserting the same client_id.

That sounds like a requirement with a rather specific deployment in mind. Given that a client attestation requires special integration with the client and the communication is out of scope of this document, we do believe it makes sense to keep the client attester relationship out of scope as well and as something that gets defined for specific use-cases.

> I think there might be a kind of mild "downgrade" attack allowing a mode switch from "normal" to "combined" by removing the PoP header. The severity of this is probably pretty limited, but it feels fragile to signal combined mode only by the absence of the OAuth-Client-Attestation-PoP header.

It doesn't really change the security posture of the situation since it is only valid if DPoP is bound to the same public key.

> I think iat should be REQUIRED. Otherwise, the AS cannot actually determine how fresh an attestation is, and has to exclusively rely on the exp from the attester which the AS does not control.

While this is a breaking change, we believe that this change makes sense and propose to switch the `iat` value of Client Attestation JWT from OPTIONAL to REQUIRED to always allow the AS/RS to make their own policy decision. This would also match better with the`use_fresh_attestation` error.

> I didn't implement combined mode, but I think that there should be a line explicitly saying that a server implementing combined mode SHOULD also provide DPoP nonces (which are optional in RFC 9449).

We currently do not have a recommendation that challenges should be used, leaving the server the decision to either use challenges or rely purely on `jti`. Given that we are not recommending challenges, we should not recommend nonces.

> The text is not currently clear on the fact that a client instance needs to remember which client instance key each instance-bound protocol artifact (i.e. refresh tokens) is actually bound to. If it doesn't do this, changing client instance keys will result in bad user experiences (potentially unbounded retries). Usually the client instance key rotation is not the choice of the client instance, but is something the platform does for your e.g. when biometrics are reset/updated, so this is something that will happen to most implementations. Guidance would be helpful.

We will add a note / implementation consideration that clients should manage what artefacts are bound to what keys.

> It would be helpful for interoperability to define the status codes that should be used for use_fresh_attestation and invalid_client_attestation errors.

Error responses in OAuth default (mostly) to status code 400. It might be beneficial to make this explicit and define specific codes like 400 for use_fresh_attestation and 401 for invalid_client_attestation? We think it may be good to be more explicit on error codes for the AS, but unsure whether we should say something about RS. WG feedback is welcome.

TLDR:

- we propose a breaking change to make `iat` of Client Attestation JWT required - we add a note to ensure clients keep their keys that artefacts are bound to - we welcome wg feedback whether to define HTTP status codes for the errors defined in this spec

Best regards,
Paul + Christian + Tobias


_______________________________________________
OAuth mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to