Zugriffsrechte

Obschon Sie später für Ihre API entsprechende Zugriffsrechte definieren und implementieren können, integriert auch unsere Anwendung ein angemessenes Rechtesystem. API as a Service bietet derzeit zwei Rollen an, die Sie an Ihre Mitarbeiter vergeben können:

Rolle Definition
ROLE_AAAS_USER Hat vollen Zugriff, aber nicht auf /aaas/system
ROLE_AAAS_ADMIN Erbt von ROLE_AAAS_USER und hat Zugriff auf /aaas/system

Die Rolle ROLE_AAAS_ADMIN darf demzufolge das System migrieren und den Applikationscache leeren. ROLE_AAAS_USER hat hierfür keine Rechte. Wenn Sie die Installationsanleitung in diesem Wiki gelesen haben, dann wissen Sie vielleicht schon, wie Sie entsprechende Benutzer anlegen können, die unsere Applikation später bedienen.

Benutzer anlegen

Sie setzen dafür ein entsprechendes Kommando von Ihrem Terminal ab und ersetzen EMAIL und PASSWORD mit validen Werten:

$ docker-compose exec php php bin/console acl:create-user EMAIL PASSWORD --admin

Wenn Sie einen Benutzer mit der Rolle ROLE_AAAS_USER erstellen möchten, dann lassen Sie --admin einfach weg.

JWT-Zugriffstoken

Unsere Anwendung beinhaltet eine Implementierung von RFC 7519 (JSON Web Token). Mithilfe kryptografischer Algorithmen werden dabei Sicherheitsansprüche (Benutzer, Rollen, etc.) verschlüsselt und anschließend kodiert. Beachten Sie bitte, dass Sie sich an allen Endpunkten unterhalb von /aaas autorisieren müssen. Sie senden dafür später einen JWT-Zugriffstoken im Authorization-HTTP-Header.

Wenn Sie einen Zugriffstoken vom Server beziehen möchten, dann senden Sie eine HTTP-POST-Anfrage an den /auth/login_check-Endpunkt:

curl -X POST -H "Content-Type: application/json" http://localhost/auth/login_check \
-d '{ "email" : "EMAIL", "password" : "PASSWORD" }'

Wenn Ihre Zugangsdaten korrekt sind, dann sollte der Server mit einem entsprechenden Token antworten:

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOcm9sZXMiOlsiUk9MRV9..."
}

Wenn Sie sich für den Header und Payload des Tokens in dekodierter Form interessieren sollten, dann geben wir Ihnen hier ein Beispiel:

{
  "typ": "JWT",
  "alg": "RS256"
}
{
  "iat": 1597744282,
  "exp": 1597747882,
  "roles": [
    "ROLE_AAAS_ADMIN",
    "ROLE_USER"
  ],
  "username": "christian@sieware.international"
}

Unsere JWT-Zugriffstoken besitzen eine Gültigkeitsdauer von 60 Minuten.

HTTP-Header

Sie senden dann bei allen Anfragen unterhalb unserer /aaas-Ressourcen diesen Zugriffstoken im Authorization-HTTP-Header mit und setzen den Wert auf Bearer TOKEN.

HTTP-Header Wert
Authorization Bearer TOKEN

Sollten Sie keinen oder einen invaliden Token senden, antwortet der Server mit einem 401 Unauthorized Error.