Skip to main content

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 Aufrufen.


Token erzeugen

POST api /token/
Feld Datentyp Erklärung
username string Benutzername oder Email-Adresse
password string das 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...<abgeschnitten>"
}

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=<token>

Code-Beispiele

Token abfragen

# pip3 install requests 
import requests
payload = {
    'username':'demo',
    'password':'demo',
}

r = requests.post('https://<API_URL>/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)
# <str>: 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://<API_URL>/<anfrage>/',data=payload,headers=headers) 
server_response_json = r.json()
# ...