Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://fed.skolfederation.se/pilot/schemas/sso-links-metadata-schema-0_1.json",
  "title": "Skolfederation SSO Links Metadata",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "organization_info": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "minLength": 1
          },
          "display_name": {
            "type": "string",
            "minLength": 1
          },
          "logotype": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          }
        },
        "required": [
          "description",
          "display_name",
          "logotype",
          "name",
          "url"
        ],
        "additionalProperties": false
      },
      "sso_links": {
        "type": "array",
        "minItems": 1,
        "items": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "minLength": 1
            },
            "disabled": {
              "type": "boolean",
              "default": false
            },
            "display_name": {
              "type": "string",
              "minLength": 1
            },
            "entity_id": {
              "type": "string",
              "format": "uri"
            },
            "idp_parameter": {
              "type": "string",
              "minLength": 1
            },
            "logo": {
              "type": "string",
              "format": "uri",
              "pattern": "^https://"
            },
            "sp_init": {
              "type": "string",
              "format": "uri",
              "pattern": "^https://"
            },
            "sso_type": {
              "type": "string",
              "enum": [
                "entity_id",
                "link_map"
              ]
            },
            "target_parameter": {
              "type": "string",
              "minLength": 1
            },
            "target_value": {
              "$ref": "#/$defs/uriOrRelativePath"
            },
            "link_mapping": {
              "type": "object",
              "minProperties": 1,
              "patternProperties": {
                "^.+$": {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://"
                }
              },
              "propertyNames": {
                "type": "string",
                "minLength": 1
              },
              "additionalProperties": false
            }
          },
          "required": [
            "description",
            "display_name",
            "entity_id",
            "logo",
            "sso_type"
          ],
          "dependentRequired": {
            "target_parameter": [
              "target_value"
            ],
            "target_value": [
              "target_parameter"
            ]
          },
          "oneOf": [
            {
              "properties": {
                "sso_type": {
                  "const": "entity_id"
                }
              },
              "required": [
                "idp_parameter",
                "sp_init"
              ],
              "not": {
                "required": [
                  "link_mapping"
                ]
              }
            },
            {
              "properties": {
                "sso_type": {
                  "const": "link_map"
                }
              },
              "required": [
                "link_mapping"
              ],
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "idp_parameter"
                    ]
                  },
                  {
                    "required": [
                      "sp_init"
                    ]
                  }
                ]
              }
            }
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "organization_info",
      "sso_links"
    ],
    "additionalProperties": false
  },
  "$defs": {
    "uriOrRelativePath": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "string",
          "pattern": "^/(?!/)[^\\s]*$"
        }
      ]
    }
  }
}

IdP Discovery Metadata

Purpose

The IdP Discovery Metadata feed provides a structured JSON representation of Identity Providers intended for consumption by:

...

The IdP Discovery Metadata feed may be generated from one or more authoritative sources, including but not limited to federation SAML metadata.


...

IdP Discovery

...

Metadata Data Model

The IdP Discovery Metadata feed MUST be a JSON array containing one object per Identity Provider.

...