Federation Endpoints¶
Federation endpoints are managed in the database. Their paths, URLs, authentication settings, and type-specific configuration can be changed at runtime via the Admin API without restarting LightHouse. See the Federation Endpoints feature documentation for dynamic dispatch, authentication, and enrollment details.
Endpoint Types¶
| Endpoint Type | Description |
|---|---|
fetch |
Federation Subordinate Fetch Endpoint (Spec §8.1) |
list |
Federation Subordinate Listing Endpoint (Spec §8.2) |
resolve |
Resolve Endpoint (Spec §8.3) |
trust_mark_status |
Trust Mark Status Endpoint (Spec §8.4) |
trust_mark_listing |
Trust Marked Entities Listing Endpoint (Spec §8.5) |
trust_mark |
Trust Mark Endpoint (Spec §8.6) |
historical_keys |
Historical Keys Endpoint (Spec §8.7); requires automatic key rollover |
enroll |
Automatic enrollment endpoint |
enroll_request |
Request enrollment endpoint (admin approval) |
trust_mark_request |
Trust mark request endpoint (admin approval) |
entity_collection |
Entity Collection Endpoint (extension draft) |
jwks_update_trigger |
POST trigger for a subordinate to request JWKS re-fetch. See Subordinate JWKS Refreshing |
jwks_update |
POST endpoint accepting a signed JWK Set. See Subordinate JWKS Refreshing |
Common Fields¶
All endpoint types share these fields:
| Field | Type | Description |
|---|---|---|
type |
string (enum) | The endpoint type (see table above) |
path |
string | null | URL path under which the endpoint is served. Set to null to disable the endpoint without deleting it. |
url |
string | null | External URL published in the Entity Configuration. If not set, the URL is derived from <entity_id><path>. |
auth_enabled |
boolean | When true, requires private_key_jwt client authentication. |
auth_trust_anchors |
list of strings (entity IDs) | Trust anchor entity IDs used to verify client assertions (when auth_enabled is true). |
config |
JSON | Type-specific configuration (see below). |
Type-Specific Configuration¶
Some endpoint types store additional configuration in a JSON config field.
Resolve (resolve)¶
{
"allowed_trust_anchors": ["https://ta.example.com"],
"use_entity_collection_allowed_trust_anchors": true,
"grace_period_seconds": 3600,
"time_elapsed_grace_factor": 0.5,
"proactive_resolver": {
"enabled": false,
"concurrency_limit": 64,
"queue_size": 10000,
"response_storage_dir": "/var/lib/lighthouse/resolver",
"response_storage_store_json": false,
"response_storage_store_jwt": true
}
}
| Field | Description |
|---|---|
allowed_trust_anchors |
List of trust anchor entity IDs permitted on the resolver. |
use_entity_collection_allowed_trust_anchors |
When true, dynamically uses the entity collection endpoint's allowed_trust_anchors. |
grace_period_seconds |
Grace period for the resolver cache (seconds). |
time_elapsed_grace_factor |
Fraction of lifetime that must elapse before a grace-period refresh is triggered. |
proactive_resolver |
Background resolver that proactively refreshes cached statements. See features/endpoints.md for requirements. |
Enroll (enroll)¶
{
"checker_type": "multiple_or",
"checker_config": [
{
"type": "trust_mark",
"config": {
"trust_mark_type": "https://tm.example.org",
"trust_anchors": ["https://ta.example.org"]
}
},
{
"type": "trust_path",
"config": {
"trust_anchors": ["https://ta2.example.org"]
}
}
]
}
The trust_anchors in checker configs are entity ID strings (not inline
trust anchor objects with JWKS). They are resolved live from the
Trust Anchor Repository at check time. See
Entity Checks for checker configuration
details.
Entity Collection (entity_collection)¶
{
"allowed_trust_anchors": ["https://ta.example.com"],
"interval_seconds": 28800,
"concurrency_limit": 4,
"pagination_limit": 512
}
| Field | Description |
|---|---|
allowed_trust_anchors |
Trust anchor entity IDs permitted in requests. |
interval_seconds |
When > 0, starts a background periodic collector. |
concurrency_limit |
How many periodic collection tasks may run in parallel. |
pagination_limit |
Maximum page size for paginated requests. |
Management¶
| Tool | Command |
|---|---|
| Admin API | GET /api/v1/admin/federation-endpoints (list) |
| Admin API | POST /api/v1/admin/federation-endpoints (create) |
| Admin API | GET/PUT/DELETE /api/v1/admin/federation-endpoints/{type} |
| Admin API (auth TAs) | PUT /api/v1/admin/federation-endpoints/{type}/auth-trust-anchors |
| lhsetup | lhsetup --only=endpoints |
| config2db | lhmigrate config2db --only=endpoints |
New endpoint types
jwks_update_trigger and jwks_update have no equivalent in the old config
file. lhmigrate config2db does not create them — use the Admin API or
lhsetup to create them if you need subordinate JWKS refreshing.