Lesson 6 of 15
Core MechanicsΒ·Lesson 6

πŸ“‹ Metadata & Policy

How entities describe capabilities and superiors constrain them

What is Metadata?

Every entity in a federation describes its capabilities through metadata[1] β€” structured key-value pairs organized by Entity Type Identifier. The metadata tells other entities what protocols are supported, which endpoints are available, and how to interact.

Metadata by Entity Type

Β· issuer
Β· authorization_endpoint
Β· token_endpoint
Β· userinfo_endpoint
Β· jwks_uri
Β· scopes_supported
Β· response_types_supported
Β· grant_types_supported
Β· subject_types_supported
Β· id_token_signing_alg_values_supported

Policy Operators

Superiors constrain their subordinates' metadata using policy operators[2] in the metadata_policy claim of Subordinate Statements. There are 7 operators:

value

Forces a specific value, completely overriding the subordinate's.

token_endpoint_auth_method: { value: "private_key_jwt" }
one_of

The value MUST be one of the listed options (like a dropdown).

application_type: { one_of: ["web", "native"] }
subset_of

Array values are reduced to the intersection with allowed values.

scopes_supported: { subset_of: ["openid", "profile", "email"] }
superset_of

Array MUST contain at least these values.

scopes_supported: { superset_of: ["openid"] }
add

Adds values to an array. Existing values are kept.

contacts: { add: ["sec@fed.gov"] }
default

Fallback value used only if the subordinate didn't provide one.

application_type: { default: "web" }
essential

When true, the parameter MUST be present in the final metadata.

redirect_uris: { essential: true }

Policy Cascade β€” Watch It Work

Metadata policies are applied in order from the Trust Anchor down through each Intermediate to produce the final resolved metadata.[3]

Step 1 of 4

Step 1 β€” Leaf's Raw Metadata

The leaf entity declares its capabilities in its Entity Configuration:

{
  "scopes_supported": ["openid", "profile", "email", "phone", "address"],
  "grant_types": ["authorization_code", "implicit", "client_credentials"],
  "token_endpoint_auth_method": "client_secret_post",
  "contacts": ["admin@uni.edu"]
}

Sources & References

  1. OpenID Federation 1.0, Section 5 β€” Metadata
  2. OpenID Federation 1.0, Section 6.1.3.1 β€” Standard Operators
  3. OpenID Federation 1.0, Section 6.1.4 β€” Enforcement