# Authentifzierung Bevor gesicherte Anfragen durchgeführt werden können, ist ein gültiges Authentifizierungs-Merkmal- künftig `Token` genannt - erforderlich. Die Authentifizierung erfolgt über API Aufruf mit Benutzername sowie Passwort-Schlüssel und gibt im Erfolgsfall ein JWT Token zurück.

Das Token muss bei allen Anfragen außer der Anmeldung übergeben werden.

Für die Authentifzierung sind folgende Informationen notwendig: - Server-URL - Benutzername / Email - Passwort Weiterhin werden folgende Informationen für weitere Aufrufe benötigt. - Gemeinde-ID(s) - Objekt-ID(s) Diese Informationen lassen sich nach der Authentifizierung direkt über den [get\_config](https://api.meldescheine.de/static/docs/de/live-api/methods/get_config.html) Aufrufen. --- ## Token erzeugen
``` POST api /token/ ```
FeldDatentypErklärung
usernamestringBenutzername oder Email-Adresse
passwordstringdas zugehörige Passwort
Besonderheit Die Authentifzierung kann zusätzlich zur Übergabe als JSON oder XML ebenfalls als `application/x-www-form-urlencoded` übergeben. werden - eher bekannt als Formular-Daten. Somit ist eine interaktive Anmeldung im System über z.B. ein HTML Formular oder eine Dritt-Anwendung möglich. #### Beispiele ##### Request
``` { "username": "m.mustermann", "password": "5bed8a17a5f780aa3b541e41c62416a64" } ```
##### Response
JSON
``` { "token": "eJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ..." } ```
## Token verwenden Das Token wird bei jeder Abfrage im HTTP Header "`Authorization`" übergeben. Vor das im ersten Schritt erzeugte Token HTTP Header `Authorization` Prefix: `JWT` Beispiel:
``` Authorization: JWT eyJhbGciOiJIUzI1NiIeyJ4554dscvd499dfcc.... ```

Bitte auf das Präfix `JWT` sowie die Leerstelle zwischen dem Präfix und dem eigentlich Token achten. `[PRÄFIX|LEERSTELLE|TOKEN]`

Alternativ kann das JWT Token auch als GET-Parameter "`jwt`" übergeben werden: `https://.../?jwt=`

## Code-Beispiele ### Token abfragen
``` # pip3 install requests import requests payload = { 'username':'demo', 'password':'demo', } r = requests.post('https:///api/token/',data=payload) server_response_json = r.json() jwt_token = server_response_json.get('token') # Aus dem server_response objekt den String-Wert aus "token" extrahieren print(jwt_token) # : eJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9... ```
### Token in Header übergeben
``` # pip3 install requests import requests payload = { # Beliebige Daten } # variable jwt_token aus vorherigem Beispiel headers = { 'authorization': 'JWT %s' % jwt_token # Ergibt "JWT eJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." } #Hier wird der Header mit übergeben r = requests.post('https:////',data=payload,headers=headers) server_response_json = r.json() # ... ```
---