New day, new thread for a specific issue I'd like to nail down quickly.

ISSUE 2: How should we signal that POST-as-GET request is different from other POST requests?

The current PR signals this by sending a JWS with an empty (zero-octet) payload, instead of a JSON object.  Jacob and Daniel suggested that we should instead use the payload being an empty JSON object as the signal.  An earlier draft PR used a field in the protected header.

In short, this question is about whether POST-as-GETs should have:

"payload": ""

or

"payload": "{}"


When implementing the first one (empty payload), Daniel and I each separately implemented a different bug that would have also accepted:

"payload": null

This may be quirk of Go's handling of byte arrays, but it may turn out to be a common pattern in JSON libraries. The downside, if a server implementer landed a bug like that, would be that clients might get away with generating the invalid "null" form, leading to interoperability problems.

There's also potential for client bugs that produce an empty payload simply due to an uninitialized field, rather than due to a POST-as-GET. This would produce confusing errors relating to GETs rather than a clearer "malformed input" error.

Lastly, many clients already implement the "{}" form as a way to GET an account, so expanding the use of "{}" minimizes disruption.

My preference is still for "{}" over "", but I am also willing to be convinced in the interests of landing this change speedily and keeping forward momentum.

_______________________________________________
Acme mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/acme

Reply via email to