[Openid-specs-ab] Comments on federation draft-08
Marcos Sanz
sanz at denic.de
Tue Aug 13 13:14:09 UTC 2019
Hi all,
I had a chance to go through the federation draft (though I admit I
skipped the appendixes because I found them a bit difficult to read) and
have a couple of comments to make. I have separated comments in category
"discussion-prone" and simple nits:
Main things:
- Section 5: The usage of well-known URIs is different to what I have seen
in other OpenID specs: Usually, at the well-known URI you'll find a
(static) document that will inform you about configuration parameters,
discovery information, URIs of actual endpoints of the service, and so on.
However, the federation spec is running the federation API directly under
"/.well-known/openid-federation". This is, for starters, a break with the
existing practice in the spec family. I then tried to look for standards
advice on the topic. In the (now obsolete) RFC 5785 there was the
following guidance text:
"well-known URIs are not intended for general information retrieval or
establishment of large URI namespaces on the Web. Rather, they are
designed to facilitate discovery of information on a site when it isn't
practical to use other mechanisms". Also from 5785: "the well-known URI
space was created with the expectation that it will be used to make
site-wide policy information and other metadata available directly (if
sufficiently concise), or provide references to other URIs that provide
such metadata".
Both sentences have admittedly disappeared in the younger RFC 8615, but
you'll still find text in 8615 speaking of "metadata discovered by
dereferencing the well-known URI", which somehow implies what the
expectations are when you visit that URI, namely, metadata.
Now you could claim that fetching entity statements and doing trust
negotation is acquiring metadata from the federation, but I think that's
executing business logic of the API ("Application _Programmers_
Interface", see? ;-). On top, I see operational problems in front of us if
the spec sticks to this well-known URI usage: if it's already difficult to
place a static document for a service like IdP discovery under
.well-known/webfinger in the generic domain amazon.com (I heard that from
an authoritative source at the IIW last year), go figure if you want to
run application code there.
All in all, I defend using the well-known URI of the federation to
discover a document where the actual Federation API endpoint is listed.
(If you all have already discussed about this and then dropped it, then
I'd be thankful for a pointer in the archives).
- Section 5.4: This looks to me a bit rudimentary. I wonder whether using
RFC 7807 and the associated media type application/problem+json wouldn't
be more appropriate to carry problems around. One downside of this,
though, it's that it hasn't been used so far in the OpenID specs I know
of: if I used consistency within the spec family as an argument before, I
should be able to accept some pushback here :-)
- Section 8.1.3: This is underspecified and "fails-to-establish-trust" is
a place where many things can go wrong. I think the spec should take the
effort of defining a base set of error codes, the same way for instance
that the core spec does in section 3.1.2.6. Further, using a catch-all
"invalid_request" code, which originally was thought as for indicating "
The request is missing a required parameter, includes an invalid parameter
value, includes a parameter more than once, or is otherwise malformed"
(RFC 6749), is a misuse.
Nits
- Section 1.2: Definition of "Trust Chain" uses the expression "trusted
chain", which is self-referential
- Section 4: s/polices/policies/
- Section 4.5: s/parties that wants/parties that want/
- Section 4.6: Last example, there's a spurious comma after the last JSON
element
- Section 5: s/multi-teanant/multi-tenant/ in all URIs
- Section 5: s/requests to the federation API does/requests to the
federation API do/
- Section 5.1.2: the example is kind of useless. I am aware that it must
be a JOSE and all of that, but it's also truncated, so it can't even be
decoded. I'd rather have an already decoded positive response to show how
it should look like (plus a caveat that it will never look like that on
the wire)
- Section 5.2.1: the example uses the parameter "op" while the actual name
is "operation"
- Section 5.2.2: s/polices/policies/
- Section 5.3.1: the example uses the parameter "op" while the actual name
is "operation". Also, the example uses a parameter "type" which isn't
defined in the text above.
- Section 6: The sentence that ends with "...and a list of entity IDs of
trusted trust anchors together with the public version of their signing
keys". If I get this right the part "together with the public version of
their signing keys" is not needed, since federation makes heavy use of
discovery and, strictly speaking, that public key information will be
dynamically be read from the trust anchors' jwks_uri, right?
- Section 6.2: Also strictly speaking, the last sentence "no information
in the chain of statements should be used before the signature chain has
been validated" directly contradicts with the previous paragraph "an
implementer MAY therefor chose [sic] to not verify the signature until all
the other checks have been done".
- Section 7.2: For the first time appears the term "trust root", and it's
used a couple of times afterwards. If it's the same as "trust anchor", I'd
rather consistently stick to the latter.
- Section 8.1.1: s/authorization request example/authentication request
example/ for the sake of consistency
- Section 8.1.1, example: the parameter "state" is twice in the URI. And I
personally find the usage of "localhost" in the client_id kind of
distracting.
- Section 11.1: Replace RFC 5785 with 8615
Best regards,
Marcos
--
Dipl.-Ing. Marcos Sanz Grossón
Leiter Software Engineering
DENIC eG, Kaiserstraße 75 – 77, 60329 Frankfurt am Main, GERMANY
E-Mail: sanz at denic.de, Fon: +49 69 27235-0, Fax: -235
https://www.denic.de
Angaben nach §25a Absatz 1 GenG: DENIC eG (Sitz: Frankfurt am Main)
Vorstand: Martin Küchenthal, Andreas Musielak, Sebastian Röthler, Dr. Jörg
Schweiger
Vorsitzender des Aufsichtsrats: Thomas Keller
Eingetragen unter Nr. 770 im Genossenschaftsregister, Amtsgericht
Frankfurt am Main
More information about the Openid-specs-ab
mailing list