Skip to content

STS 3 - Beispielkonfiguration

In dieser Anleitung wird eine Beispiel Client-Konfiguration für den STS-3 beschrieben. Die CMI API selbst braucht den Client nur für das Config-UI.

Beispiel Client-Konfiguration

{
    "ClientId": "<Client-ID (Bsp.: cmi-api-configui)>",
    "RequireClientSecret": false,
    "AccessTokenLifetime": 3600,
    "AllowedGrantTypes": [
        "authorization_code"
    ],
    "ClientSecrets": [
        {
            "value": "<Client-Secret SHA512 Encrypted>",
        }
    ],
    "AllowAccessTokensViaBrowser": true,
    "RedirectUris": [
        "regex:^(<Protokoll>:\/\/<Server>:<Port>).*"
    ],
    "PostLogoutRedirectUris": [
        "regex:^(<Protokoll>:\/\/<Server>:<Port>).*"
    ],
    "AllowedScopes": [
        "metatool",
        "openid",
        "profile"
    ],
    "AllowedCorsOrigins": [
        "<Protokoll>://<Cmi-Api>:<Port>"
    ]
}
  • GrantType "authorization_code" ist nötig
  • Protokoll, Server und Port beziehen sich auf die CMI-API.
  • Das ClientSecret muss als SHA-512-Encrypted Secret hinterlegt werden

Beispiel Token-Request

Um die CMI API verwenden zu können (API Requests) muss ein gültiges Token vorhanden sein. Hier ist ein STS-Client für den Grant-Type client_credentials.

Der OpenID-Client wird nicht für die API selbst benötigt, sondern vom aufrufenden System, das die API verwenden möchte.

{
  "ClientId": "<Client-ID (Bsp.: cmi-api-tokenrequest)>",
  "AccessTokenLifetime": 3600,
  "AllowedGrantTypes": [
    "client_credentials"
  ],
  "ClientSecrets": [
    {
      "value": "<Client-Secret SHA512 Encrypted>"
    }
  ],
  "AllowedScopes": [
    "metatool",
    "openid",
    "profile"
  ],
  "ClientCredentialsBackendUser": {
    "username": "<CMI-User>",
    "password": "<CMI-User Passwort>"
  }
}

Wenn der Client im STS konfiguriert ist, so kann mit dem folgenden Curl-Request ein Token bezogen werden:

curl --location --request POST '<Protokoll>://<Sts-Server>/<Mandant>/identity/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=metatool' \
--data-urlencode 'client_secret=<Client-Secret als Plain-Text>' \
--data-urlencode 'client_id=<Client-ID>'