FactFinder Authentifizierung
FACT-Finder bietet zwei Möglichkeiten zur Authentifizierung an: Basic Authentication oder OAuth2.
Basic Authentification
Um sich mit Basic Authentication zu authentifizieren, muss der Authorization
-Header folgendes enhalten: das Wort Basic
gefolgt von einem Leerzeichen und der Base64-Encodierten username:passwort
Zeichenkette.
Ein Header mit den Anmeldedaten factfinder / pw
würde so aussehen:
Authorization: Basic ZmFjdGZpbmRlcjpwdw==
ZmFjdGZpbmRlcjpwdw==
ist hierbei die Base64-Representation von factfinder:pw
.
OAuth2
OAuth2 unterstützt verschiedene Abläufe für die Authentifizierung. Momentan wird nur der Password-Flow von FACT-Finder unterstützt.
Der Ablauf ist wie folgt:
- Anwendung sendet Anmeldedaten + ClientID zu FACT-Finder
- FACT-Finder antwortet bei erfolgreicher Authentifizierung und Autorisierung mit einem Access-Token
- Anwendung nutzt Access-Token um sich in der REST-Api zu authentifizieren
In OAuth2 gibt es Scopes, mit welchen es möglich ist ein Access-Token in der Berechtigung einzuschränken. Eine aktuelle Liste aller Scopes sind auf der Swagger-UI vorzufinden.
https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html
Das Client Konzept in OAuth2 ist für Third-Party Anwendungen gedacht. Mit diesem wäre es möglich, die Scopes für verschiedene Clients einzuschränken. In FACT-Finder ist dies aber bereits mit den User-Rollen möglich, aus diesem Grund sollte der Client mit der ID ff
und leerem ClientSecret verwendet werden.
Beispiel Anfrage für einen Access-Token
GET-Request: example.de/fact-finder/oauth/token?grant_type=password&username=factfinder&password=pw&client_id=ff
Rückgabe
{
"access_token": "30993c9f-5ed2-4ecd-8e57-c2b6721a656e",
"token_type": "bearer",
"refresh_token": "c11726cb-9b73-44df-8797-fb9c5be758c8",
"expires_in": 3599,
"scope": "public_queries import database config analytics"
}
In diesem Beispiel wurden die Scopes nicht limitiert. Dies wäre möglich mit dem query-Parameter scope
.
Beispiel:
example.de/fact-finder/oauth/token?grant_type=password&username=factfinder&password=pw&client_id=ff&scope=import config
Scopes werden mit einem Leerzeichen getrennt.
Mit dem Bearer
-Keyword und dem Access-Token im Authorization
-Header kann nun die API angesprochen werden.
Beispiel:
Authorization: Bearer 30993c9f-5ed2-4ecd-8e57-c2b6721a656e
Mit der Anfrage eines Access-Token wird auch ein Refresh-Token zurückgegeben. Mit diesem ist es möglich einen neuen Access-Token zu erhalten ohne erneutes senden der Anmeldedaten.
Beispiel Anfrage:
GET-Request: example.de/fact-finder/oauth/token?grant_type=refresh_token&refresh_token=c11726cb-9b73-44df-8797-fb9c5be758c8
Rollen mit dem Prefix Api
repräsentieren die einzelnen OAuth2 Scopes.
Beispiel:
Scope public_queries
repräsentiert die Rolle ApiPublicQueries
, import
-> ApiImport
usw..