Open SECtim opened 1 month ago
Related to #7
If the Im1 and Im2 impose conflicting policies, while being compliant with the TA's policy, the intuitive action for the RP is to raise an issue with its immediate Superiors. Or, if OpenID Connect Relying Party Metadata Choices 1.0 is supported, use the RP metadata parameter token_endpoint_auth_methods_supported
.
{
"token_endpoint_auth_methods_supported" : ["private_key_jwt", "self_signed_tls_client_auth"]
}
https://openid.net/specs/openid-connect-rp-metadata-choices-1_0-00.html
At today's call we found out that we'll need to update the section "Metadata Policy Principles" - the 6th principle of Determinism.
https://openid.net/specs/openid-federation-1_0.html#section-6.1.1-2.12
Currently it says:
The resolution and application of metadata policies in a Trust Chain is deterministic. Trust Anchors and Intermediate Entities are thus able to formulate policies that exhibit predictable and reproducible outcomes.
I have a proposal to edit it to say this instead:
The resolution and application of metadata policies in a given Trust Chain is deterministic. Trust Anchors and Intermediate Entities are able to formulate policies that exhibit predictable and reproducible outcomes for all Subordinate Entities for which a single Trust Chain can be built.
If the Im1 and Im2 impose conflicting policies, while being compliant with the TA's policy, the intuitive action for the RP is to raise an issue with its immediate Superiors.
Maybe, but I think the Federation spec should either prevent or give guidance on this scenario: If the WG agrees that such a situation in an undesirable state, then the spec should say that such conflicting policies are not allowed and who is responsible for enforcing this rule (and how). If, on the other hand, such a situation is intended to be allowed, the spec should give clear guidance on what do to in such a situation (or at least explicitly mention that something like this might happen).
Personally, I would say it's an undesirable state, but something that can (and will) happen; I don't think it's a realistic approach to forbid it, since federation topologies can get arbitrary complex.
I think guidance how to handle such situation is very much needed.
the Federation spec should either prevent or give guidance on this scenario:
I'm okay for the spec to include some sort of guidance on this. But I don't want to think about the wording of this :)
There might be ways to prevent this, but it is going to complicate the protocol. This will require authorities to periodically crawl the federation and check the chains.
At first I thought federations will be something elegant and "ideal", but now I see it's going to be more like the Internet, which generally works, despite the occasional networking faults.
As far as I can see, the following Federation hierarchy is allowed by the specification:
Furthermore, the specification seems to allow for
Im1
andIm2
to define conflicting metadata policies for, say, theopenid_relying_party
entity type. For example,Im1
may requiretoken_endpoint_auth_method
to beprivate_key_jwt
(i.e., using thevalue
operator). Likewise,Im2
requires thetoken_endpoint_auth_method
to beself_signed_tls_client_auth
.For example, how would
RP
register atOP
in this case (Section 12.2)?Side note: Whether or not
RP
accepts this registration (see Section 12.2.2.2 No. 4) now depends on which of the two possible Trust ChainsRP
uses when checking compliance of the registered metadata with the policy. Intuitively, the outcome of the compliance check should be deterministic (i.e., disregarding transient issues, an honest OP's registration should always be acceptable to an honest RP).