[Openid-specs-ab] OpenID Connect Federation draft 09 ready for your review
Marcos Sanz
sanz at denic.de
Tue Nov 5 14:40:01 UTC 2019
Hi Roland,
> > I've been thinking about this conglomerate of issues and it'd be
actually
> > easier if the TA self-signed statement were *not* part of the chain:
the
> > Consumer should be configured with the TA's name (the issuer URI) and
TA
> > public key, and it could stop walking up the chain once it finds an ES
> > whose iss and signature match these two configured values.
>
> When how to get self-signed information became different from how to
> get information about an entity from another entity then the TA's
self-signed
> statement was removed from the trust chain. This may not have been
spelled out
> clearly enough.
ok, I see. Simmilarly to what RFC 5280 does, though, I'd expect the
Consumer to be explicitly configured with both, the TA-identifier and its
public key, and not only the latter like the document currently does (at
least, that's what it looks to me).
> > The second thing, which is less of a recommendation but more a
question on
> > how to deal with this in the JWT trust chain, is the good practice of
> > validating 'iss' in JWTs (s. for instance the "MUST" wording in
> > https://tools.ietf.org/html/draft-ietf-oauth-jwt-bcp-07#section-3.8).
That
> > soon-to-become-RFC showcases OIDC doing this via the jwks_uri
mechanism to
> > dynamically dig issuer public keys for verification. However, we don't
> > resort to that mechanism at all in the Federations spec: the chain
> > validator has to blindly believe the keys in the jwks element of the
upper
> > chain link. So it's unclear to me whether this key-to-issuer-binding
is
> > being neglected at the moment in our trust chain.
>
> Well, it all starts with the TA. If you don’t trust the TA then you’re
smoked.
> The Federation spec hinges on the fact that you do trust the TA.
I see it exactly the other way round: you start with a self-signed leaf
statement and you walk your way up the trust chain via auth_hints *hoping
to find* a TA. But until you do so (if you do so!), everything on the
journey is not to be trusted and a potential attack vector. For instance:
I am scared about rogue intermediate FEs that publish ESs via their
federation API endpoint with fake issuers and keys that do not relate to
them whatsoever (it's true that the problem would remain compartmentalized
with the JWT typing we are introducing further down, but still).
While inspecting the workflow anew under this light I found out that it'd
be important to add in 6.1.2 the requirement for the Consumer to verify
that iss and sub of the ES response MUST match the values of the
respective query parameter. In case the query had no sub query parameter,
the consumer MUST verify that iss = sub.
> > Finally, and talking about the jwks element: the Federations spec says
> > "keys that can be found here are primarily intended to sign entity
> > statements and should not be used in other protocols". While reading
that
> > I was reminded of the aforementioned JWT-BCP's recommendation "Use
> > different keys for different kinds of JWTs. Then the keys used to
validate
> > one kind of JWT will fail to validate other kind of JWTs", which is
good.
> > And then I realized that Federations is not using explicit JWT typing,
> > though it is RECOMMENDED for new uses of JWTs (and Entity Statements
are
> > such). So I think we're still in time to include that.
>
> Good idea!
Great! Looking forward to that.
Best,
Marcos
More information about the Openid-specs-ab
mailing list