Summary

The profile enables organizations to describe Service Providers (SPs) and their supported SSO mechanisms in a machine-readable format, using JSON. It supports two main SSO link types:

Each metadata entry includes descriptive and branding information about the organization and its services, including display names, logos, and landing pages, facilitating consistent presentation in discovery services and login portals.


Metadata requirements

Organization Information (organization_info)

This section contains metadata about the organization offering the SSO services.

List of SSO Links (sso_links)

This section contains a list of services that support SSO authentication.

Elements in each SSO link

If sso_type is "entity_id"

These fields are required for a standard SAML SSO setup using the entity ID as parameter for identifying the IdP.

If sso_type is "link_map"

Fields used when the service uses direct mapping between IdPs and specific login URLs 

Example metadata

[
    {
        "organization_info": {
            "description": "An example description of the service provider organization",
            "display_name": "Example Service Provider",
            "logotype": "https://example.com/logo.svg",
            "name": "Example Service Provider AB",
            "url": "https://example.com"
        },
        "sso_links": [
            {
                "description": "Example Digital Math Service is the number one digital math companion in Schengen",
                "disabled": false,
                "display_name": "Math Rocket",
                "entity_id": "https://example.com/math",
                "idp_parameter": "entityID",
                "logo": "https://example.com/math/logo.svg",
                "sp_init": "https://example.com/math/Shibboleth.sso/Login?",
                "sso_type": "entity_id",
                "target_parameter": "Target"
            },
            {
                "description": "Example Digital Brazilian Jiu-Jitsu Service is the number one digital BJJ teacher in Schengen",
                "disabled": false,
                "display_name": "Example Digital Brazilian Jiu-Jitsu Service",
                "entity_id": "https://example.com/bjj",
                "link_mapping": {
                    "https://idp.example1.com": "https://example.com/bjj/login?idp=example1-idp",
                    "https://idp.example2.com": "https://example.com/bjj/login?idp=example2-idp",
                    "https://idp.example3.com": "https://example.com/bjj/login?idp=example3-idp"
                },
                "logo": "https://example.com/bjj/logo.png",
                "sso_type": "link_map",
            }
        ]
    }
]


JSON schema

JSON schema for validating metadata:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "organization_info": {
        "type": "object",
        "properties": {
          "description": { "type": "string" },
          "display_name": { "type": "string" },
          "logotype": { "type": "string", "format": "uri" },
          "name": { "type": "string" },
          "url": { "type": "string", "format": "uri" }
        },
        "required": ["description", "display_name", "logotype", "name", "url"]
      },
      "sso_links": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "description": { "type": "string" },
            "disabled": { "type": "boolean" },
            "display_name": { "type": "string" },
            "entity_id": { "type": "string", "format": "uri" },
            "idp_parameter": { "type": "string" },
            "logo": { "type": "string", "format": "uri" },
            "sp_init": { "type": "string", "format": "uri" },
            "sso_type": { "type": "string", "enum": ["entity_id", "link_map"] },
            "target_parameter": { "type": "string" },
            "link_mapping": {
              "type": "object",
              "patternProperties": {
                "^https://": { "type": "string", "format": "uri" }
              },
              "additionalProperties": false
            }
          },
          "required": ["description", "display_name", "entity_id", "logo", "sso_type"],
          "anyOf": [
            {
              "properties": {
                "sso_type": { "const": "entity_id" }
              },
              "required": ["idp_parameter", "sp_init", "target_parameter"]
            },
            {
              "properties": {
                "sso_type": { "const": "link_map" }
              },
              "required": ["link_mapping"]
            }
          ]
        }
      }
    },
    "required": ["organization_info", "sso_links"]
  }
}