# 🚧 OAuth Authentifizierung

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'

Alle Anfragen an FIT-Connect müssen authentifiziert durchgeführt werden. 
Hierfür ist ein Access Token notwendig, den man beim OAuth-Dienst abholen kann. Hierfür ist ein entsprechender API-Client notwendig, der in "[Accountregistrierung](../account)" erstellt wird.
Das Token muss dann bei jeder Anfrage über den `Authentication`-Header mitgeschickt werden.

Da ein Token **max. 24h** gültig ist, muss dieses rechtzeitig erneuert werden.

<Tabs
  defaultValue="curl"
  values={[
    { label: 'curl', value: 'curl', },
    { label: 'Java', value: 'java', },
    { label: 'C#', value: 'csharp', },
  ]
}>
<TabItem value="java">



</TabItem>

<TabItem value="csharp">

</TabItem>

<TabItem value="curl">

  ```bash
  export OAUTH_URL=<URL>
  export CLIENT_ID=<user>
  export CLIENT_SECRET=<password>
  curl \
    -H "Content-Type: application/json" \
    --data "{ \"grant_type\": \"client_credentials\", \"client_id\": \"$CLIENT_ID\", \"client_secret\": \"$CLIENT_SECRET\"}" \
    -X POST $OAUTH_URL
  ```

</TabItem>
</Tabs>

:::caution Generierung eines User-Tokens für sendende Systeme
Für sendende Systeme reicht der OAuth-Access-Token nicht aus um Zugriff auf die API zu bekommen.
Sendende System müssen für den Zugriff auf die API ein User-Token generieren, welches Sie zusammen mit dem Access-Token an die API übermiteln müssen.
Dieser Access-Token ist als mit dem privaten Schlüssel des API Clients zu signieren, der dem öffentlichen Schlüssel des API-Clients entspricht (Siehe [Accountregistrierung](../account)).
Für Aufbau und Beschreibung des User-Tokens siehe "[Generierung der JWT-Tokens](../details/authentication/users#generierung-der-jwt-tokens)"
:::