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:

  1. Anwendung sendet Anmeldedaten + ClientID zu FACT-Finder
  2. FACT-Finder antwortet bei erfolgreicher Authentifizierung und Autorisierung mit einem Access-Token
  3. 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 ApiPublicQueriesimport -> ApiImport usw..

Auf dieser Seite