@@ -776,7 +776,9 @@ contain the following information about its OCM API:
776776 Message Signatures. The URL is discovered from this field; it is
777777 not a fixed path in the OCM API.
778778 Implementations that advertise the `"http-sig"` capability MUST
779- provide this URL as well, and it MUST use https.
779+ provide this URL as well, and it MUST use https. As with the
780+ Discovery Process, implementations MAY fallback to HTTP instead of
781+ HTTPS in testing setups.
780782 Example : ` "https://cloud.example.org/ocm/jwks"` .
781783* OPTIONAL: tokenEndPoint (string) - URL of the token endpoint hosted by
782784 this OCM Server. When this OCM Server acts as Sending Server, the
@@ -838,8 +840,10 @@ components:
838840* "content-length" - message size
839841
840842The signature parameters MUST include `created` and `keyid`.
841- Freshness and replay protection are anchored on `created` (see
842- Verification Requirements). The `keyid` value MUST be equal to the
843+ Freshness is anchored on `created` (see Verification Requirements);
844+ ` created` bounds how long a captured signature stays acceptable, but
845+ does not by itself detect replay within that window (see Section
846+ 7.2.2 of [RFC9421]). The `keyid` value MUST be equal to the
843847` kid` value of the corresponding key in the signer's JWK Set (see
844848[Keys and Algorithms](#keys-and-algorithms)).
845849
@@ -2000,7 +2004,9 @@ Implementers SHOULD NOT use it and prefer short-lived tokens instead.
20002004# # Code Flow
20012005
20022006All `{tokenEndPoint}` requests MUST be transmitted over HTTPS and
2003- signed using HTTP Signatures. Bearer tokens MUST be treated as
2007+ signed using HTTP Signatures. As with the Discovery Process,
2008+ implementations MAY fallback to HTTP instead of HTTPS in testing
2009+ setups. Bearer tokens MUST be treated as
20042010confidential and never logged, persisted beyond their lifetime, or
20052011transmitted over unsecured channels.
20062012
@@ -2232,8 +2238,9 @@ illustrates the procedure to verify an incoming signed request:
223222382. Fetch the Discovery response from
22332239 ` https://<provider-domain>/.well-known/ocm` and read its
22342240 ` jwksUri` field. If the Sending Server advertises the `http-sig`
2235- capability but no `jwksUri` is present, the receiver MUST reject
2236- the request as non-conformant
2241+ capability but no `jwksUri` is present, the receiver can discard
2242+ the notification, as described in [Decision to
2243+ Discard](#decision-to-discard)
223722443. Fetch the public keys from the URL given by `jwksUri`
223822454. Locate the unique signature carrying the `tag="ocm"` parameter in
22392246 the `Signature-Input` header, disregarding its dictionary label
@@ -2708,6 +2715,16 @@ The complete changelog is updated in the OCM-API GitHub repository.
27082715* The `Date` header is no longer covered by signatures: freshness is
27092716 anchored on the `created` signature parameter (see Section 7.2.4
27102717 of [RFC9421]).
2718+ * Clarified that `created` bounds the lifetime of a captured
2719+ signature but does not by itself detect replay within that window
2720+ (see Section 7.2.2 of [RFC9421]).
2721+ * `jwksUri` and `{tokenEndPoint}` transport: https remains mandatory,
2722+ with the same HTTP fallback allowance for testing setups that the
2723+ Discovery Process has; dropped the https-only schema pattern from
2724+ spec.yaml accordingly.
2725+ * Appendix B now defers the missing-`jwksUri` case to [Decision to
2726+ Discard](#decision-to-discard) instead of stating a stronger
2727+ requirement in an informative section.
27112728* Updated the signature examples: replaced the legacy `Digest` header
27122729 with `Content-Digest` [RFC9530] and applied [RFC8792] line
27132730 wrapping.
0 commit comments