---
title: Authentifizierung
description: Zugriffstoken über OpenID Connect holen, erneuern und die Sitzung beenden.
status: aktualisiert
---

Die GraphQL-API verwendet **OpenID Connect** zur Anmeldung und Berechtigung. Für jeden Zugriff
benötigen Sie ein Zugriffstoken vom Anmeldeserver.

:::note
Für eine eigene Anwendung benötigen Sie eine `client_id` und ein `client_secret`. Beides erhalten
Sie auf Anfrage vom MultiBaseCS-Team.
:::

Der OpenID-Connect-Endpunkt lautet:

`https://auth.34u.de/realms/multibasecs/protocol/openid-connect/`

## 1. Zugriffstoken holen

Das Token holen Sie am **Token-Endpunkt**:

`POST https://auth.34u.de/realms/multibasecs/protocol/openid-connect/token`

| Parameter | Wert |
|---|---|
| `grant_type` | `password` |
| `scope` | `openid` |
| `client_id` | Client-ID Ihrer Anwendung |
| `client_secret` | Client-Secret Ihrer Anwendung |
| `username` | Benutzername des MultiBaseCS-Benutzerkontos |
| `password` | Kennwort des MultiBaseCS-Benutzerkontos |

```bash
curl --request POST \
  --url https://auth.34u.de/realms/multibasecs/protocol/openid-connect/token \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'grant_type=password&client_id=<client-id>&client_secret=<client-secret>&scope=openid&username=<benutzername>&password=<kennwort>'
```

Antwort:

```json
{
  "access_token": "<zugriffstoken>",
  "expires_in": 300,
  "refresh_token": "<aktualisierungstoken>",
  "token_type": "Bearer",
  "scope": "openid"
}
```

## 2. Die API aufrufen

Geben Sie das Zugriffstoken bei jeder Anfrage im Header `Authorization` mit:

```bash
curl --request POST \
  --url https://api.multibasecs.de/graphql \
  --header 'Authorization: Bearer <zugriffstoken>' \
  --header 'Content-Type: application/json' \
  --data '{"query":"query { Clouds { ID_Cloud Bezeichnung } }"}'
```

## 3. Token erneuern

Zugriffstoken sind nur wenige Minuten gültig (`expires_in` in Sekunden). Damit sich Ihre Anwendung
nicht ständig neu anmelden muss, holen Sie mit dem `refresh_token` ein neues Zugriffstoken:

```bash
curl --request POST \
  --url https://auth.34u.de/realms/multibasecs/protocol/openid-connect/token \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'grant_type=refresh_token&client_id=<client-id>&client_secret=<client-secret>&refresh_token=<aktualisierungstoken>'
```

## 4. Abmelden

Um die Sitzung zu beenden, widerrufen Sie das Aktualisierungstoken:

```bash
curl --request POST \
  --url https://auth.34u.de/realms/multibasecs/protocol/openid-connect/logout \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'client_id=<client-id>&client_secret=<client-secret>&refresh_token=<aktualisierungstoken>'
```

## Fehler

| Fall | Code in `extensions.code` |
|---|---|
| Kein oder ungültiges Token | `UNAUTHENTICATED` (HTTP 401) |
| Gültiges Token, aber keine Berechtigung für die angefragten Daten | `FORBIDDEN` (HTTP 403) |

Beispiel:

```json
{
  "errors": [
    {
      "message": "Unauthorized",
      "path": ["Clouds"],
      "extensions": { "code": "UNAUTHENTICATED" }
    }
  ],
  "data": null
}
```
