Skip to content

Entity Checks

With the Entity Checks mechanism checks on an entity can be defined. One can define their own Entity Checks by implementing the EntityChecker interface and registering it through the RegisterEntityChecker function before loading the config file.

The following Entity Checks are already implemented and supported out of the box by LightHouse: - none: Always forbids access - trust_mark: Checks if the entity advertises a Trust Mark and verifies that it is valid - trust_path: Checks if there is a valid trust path from the entity to the defined Trust Anchor - authority_hints: Checks if the entity's published authority_hints contain the defined Entity ID - entity_id: Checks if the entity's entity_id is one of the defined ones - multiple_and: Used to combine multiple EntityChecker using AND - multiple_or: Used to combine multiple EntityChecker using OR

In the following we describe in more details how to configure the different Entity Checkers:

None

No additional configuration applicable.

Example

checker:
  type: none

Trust Mark

For a Trust Mark Entity Checker one must configure the Trust Mark Type of the Trust Mark that should be checked. Additionally, one must provide either Trust Anchors or the Trust Mark Issuer's jwks and in the case of delegation information about the Trust Mark Owner.

Config Parameters

Claim Necessity Description
trust_mark_type REQUIRED The Trust Mark Type of the Trust Mark to check
trust_anchors REQUIRED unless trust_mark_issuer_jwks is given A list of Trust Anchors used to verify the Trust Mark issuer
trust_mark_issuer_jwks REQUIRED if trust_anchors is not given The jwks of the Trust Mark Issuer
trust_mark_owner REQUIRED if trust_anchors is not given and delegation is used Information about the Trust Mark Owner

The trust_anchors claim is a list where each element can have the following parameters:

Claim Necessity Description
entity_id REQUIRED The Entity ID of the Trust Anchor
jwks OPTIONAL The Trust Anchor's jwks; if omitted it is obtained from its Entity Configuration

The trust_mark_owner claim has the following parameters:

Claim Necessity Description
entity_id REQUIRED The Entity ID of the Trust Mark Owner
jwks REQUIRED The Trust Mark Owner's jwks

Examples

checker:
  type: trust_mark
  config:
    trust_mark_type: https://tm.example.org
    trust_anchors:
      - entity_id: https://ta.example.org
checker:
  type: trust_mark
  config:
    trust_mark_type: https://tm.example.org
    trust_mark_issuer_jwks: {"keys":[{"alg":"ES512","crv":"P-521","kid":"E6XirVKtuO2_76Ly8Lw1cS_W4FUfw_lx5M_z33aMO-I","kty":"EC","use":"sig","x":"AbZpRmHJVpqqJ2q4bFMPto5jVhReNe0toBHWm0y-AhdpqYIqLA-J3ICr_I42BgmC4pG9lQE4qU8mJjkX1I__PDK8","y":"AFl9aVDzsUJPbyxDe96FuLWJNYNOo68WcljWEXJ0QzsFaTDUtykNe1lf3UoOXQWnvNQ1eD2iyWTef1gRR9A6HOSI"}]}
checker:
  type: trust_mark
  config:
    trust_mark_type: https://tm.example.org
    trust_mark_issuer_jwks: {"keys":[{"alg":"ES512","crv":"P-521","kid":"E6XirVKtuO2_76Ly8Lw1cS_W4FUfw_lx5M_z33aMO-I","kty":"EC","use":"sig","x":"AbZpRmHJVpqqJ2q4bFMPto5jVhReNe0toBHWm0y-AhdpqYIqLA-J3ICr_I42BgmC4pG9lQE4qU8mJjkX1I__PDK8","y":"AFl9aVDzsUJPbyxDe96FuLWJNYNOo68WcljWEXJ0QzsFaTDUtykNe1lf3UoOXQWnvNQ1eD2iyWTef1gRR9A6HOSI"}]}
    trust_mark_owner:
      entity_id: https://ta.example.org
      jwks: {"keys":[{"alg":"ES512","crv":"P-521","kid":"gChx94HqIDTscqMzxDps6degt2j_Z7OrDsx0Fc24rKA","kty":"EC","use":"sig","x":"AAyVRMA84JsAtJ9z3qKVzgBN1DL8lDIrHRRYtnYiSkfe-i0V7W21QJ_VBBRF3kWFEYadRL9z4yJC7gYvsojF6p8C","y":"AYx1JCtCfrvNR8x8KibI2mQJKAsszjslfd8WlTha8lxtvncpg5c-UxjJgpCYRo3jwdvxUCa6LKHu0TzbUhKfFK8f"}]}

Trust Path

For a trust path Entity Checker one must configure the Trust Anchors that should be used to verify that there is an existing trust path to one of these Trust Anchors.

Config Parameters

Claim Necessity Description
trust_anchors REQUIRED A list of Trust Anchors used to verify the trust path

The trust_anchors claim is a list where each element can have the following parameters:

Claim Necessity Description
entity_id REQUIRED The Entity ID of the Trust Anchor
jwks OPTIONAL The Trust Anchors jwks; if omitted it is obtained from its Entity Configuration

Example

Example

checker:
  type: trust_path
  config:
    trust_anchors:
      - entity_id: https://ta.example.org

Authority Hints

For an Authority Hints Entity Checker one must configure the Entity ID that should be present in the authority hints.

Config Parameters

Claim Necessity Description
entity_id REQUIRED The Entity ID that should be present in the entity's authority hints

Example

Example

checker:
  type: authority_hints
  config:
    entity_id: https://ia.example.org

Entity IDs

For an Entity ID Entity Checker one must configure the Entity ID(s) that are allowed.

Config Parameters

Claim Necessity Description
entity_ids REQUIRED A list of allowed Entity IDs

Example

Example

checker:
  type: entity_id
  config:
    entity_ids: 
      - https://op1.example.org
      - https://op2.example.org

Multiple

To combine multiple Entity Checkers (either with AND or OR) one must provide all Entity Checkers:

Nested Example

checker:
  type: multiple_and
  config:
    - type: trust_path
      config:
        trust_anchors:
          - entity_id: https://ta.example.org
    - type: multiple_or
      config:
        - type: trust_mark
          config: 
            trust_mark_type: https://tm.example.com
            trust_anchors:
              - entity_id: https://ta.example.com
        - type: trust_mark
          config: 
            trust_mark_type: https://tm.example.org
            trust_anchors:
              - entity_id: https://ta.example.org