OAuth 2.0: Der Client Credentials Flow im Detail

02.11.2022

Im vorherigen Teil der Blogpostreihe zu OAuth2 wurde der Authorization Code Flow betrachtet. Heute werden wir uns den OAuth 2.0 Client Credentials Flow anschauen, der vor allem für eine Autorisierung ohne Benutzerinteraktion interessant ist.

OAuth 2.0Der OAuth 2.0 Client Credentials Flow wird angewendet, wenn wie erwähnt keine Nutzerinteraktion möglich ist, sprich wenn der Resource Owner keine Möglichkeit besitzt, sich über einen Logindialog beim Authorization Server zu authentifizieren. Er eignet sich daher besonders für eine Maschine-to-Maschine Autorisierung. Folgende Usecases sind z.B. denkbar:

  • Microservice to Microservic
  • Automatisierte Prozesse, Cronjobs

Beim Client Credentials Flow wird der Token-Endpunkt des Authorization Server direkt vom Client angesprochen, ohne dass der Authorization Server zuvor einen Redirect zu einer Loginseite veranlassen muss. Es gibt also keinen Logindialog, da eine Nutzerinteraktion in diesem Anwendungsfall nicht möglich ist. Der Client authentifiziert sich direkt über seine Client ID und sein Client Secret beim Authorization Server. Diese Informationen müssen zuvor bereits manuell beim Authorization Server hinterlegt werden. Nach erfolgreicher Authentifizierung erhält der Client das Access Token

Client Credentials Flow
Abbildung 1: Client Credentials Flow; Bildquelle: Eigene Darstellung

 

Erklärung des Client Credentials Flows:

 

1) Der Client sendet eine Tokenanfrage an den Token-Endpunkt des Authorization Server. Diese Anfrage enthält die Client ID und das Client Secret

   POST {Token Endpoint} HTTP/1.1
   Host: {Authorization Server}
   Authorization: Basic {Client Credentials}       // - Base64 Encodiertes Client ID + Client Secret
   Content-Type: application/x-www-form-urlecoded
   grant_type=client_credentials                   // - Die Art des Grants
   &scope={Scopes}                                 // - Was kann der Client mit der Autorisierung durchführen.

 

2) Bei erfolgreicher Authentifizierung, liefert der Authorization Server das Access Token an den Client aus

   HTTP/1.1 200 OK
   Content-Type: application/json;charset=UTF-8
   Cache-Control: no-store
   Pragma: no-cache
   {
      “access_token”: “{Access Token}”,    // – Das Access Token
      “token_type”: “{Token Type}”,        // – Die Art des Tokens
      “expires_in”: {Lifetime In Seconds}, // – Optional
      “scope”: “{Scopes}”                  // – Zu was der Client tatsächlich Autorisiert ist 
   }

 

3) Der Client frägt die Ressource beim Resource Server an und präsentiert seinen Token. Dieser Validiert die Anfrage und liefert die Ressource.

 

Fazit: Der OAuth 2.0 Client Credentials Flow kommt zu Zug, wenn ohne Benutzerauthentifizierung gearbeitet wird

Benötigt eine Maschine, ein Microservice oder ein automatisierter Prozess Zugriff auf eine geschützte Ressource, können Grants die eine Benutzerauthentifizierung benötigen, nicht verwendet werden, da hier eine Benutzerinteraktion nötig ist. In diesem Szenario kommt der Client Credentials Flow zum Zug.

 

Mehr zu OAuth2.0 erfahren

 

Quellen           

 

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*