Intra-Microserves authentication: Unterschied zwischen den Versionen
K (Formatierungen eingefügt) |
K (Fomulierung) |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Interne Authentifizierung== | ==Interne Authentifizierung== | ||
Im folgenden wird die Authentifizierung zwischen den verschiedenen Microservices (MS) thematisiert. Es geht somit darum, wie ein MS sicherstellen kann, dass ein Request tatsächlich von einem anderen MS stammt. Dies wird vor allem für die Absicherung sensibler Daten benötigt, die via Webservices bereitgestellt werden. | |||
=== | ===Identität eines MS=== | ||
Die Identität jedes | Die Identität jedes MS wird über asymmetrische Verschlüsselung abgebildet. Hierbei verwenden wir den RSA Standard PKCS12, welcher weit verbreitet ist. Dies ermöglicht zum einen das Aufbauen einer HTTPS-Verbindung zwischen den verschiedenen MS und zum anderen können Tokens (siehe Konzept zu [[Shared Session]]) von MS eindeutig signiert werden. | ||
===Authentifizierung via Shared-Session=== | ===Authentifizierung via Shared-Session=== | ||
Die Authentifizierung eines Microservice findet über Sluice statt. Hierfür kennt Sluice alle CA‘s dieser und signiert diese mit Hilfe einer Trust-Chain. | Die Authentifizierung eines Microservice findet über den speziellen MS ''Sluice'' statt. Hierfür kennt Sluice alle CA‘s dieser und signiert diese mit Hilfe einer Trust-Chain. | ||
Um | Um dem Prinzip des ''Loosely couplings'' zu folgen, werden die so erzeugten Tokens über Shared-Sessions ausgehandelt. | ||
MS1 möchte gerne Daten von Drops bekommen: | MS1 möchte gerne Daten von Drops bekommen: | ||
Zeile 28: | Zeile 29: | ||
# Drops kennt Sluice und traut der Chain im CA und der Signatur des Tokens. | # Drops kennt Sluice und traut der Chain im CA und der Signatur des Tokens. | ||
# Drops sendet Daten. | # Drops sendet Daten. | ||
==HTTPS zwischen Microservices== | ==HTTPS zwischen Microservices== |
Aktuelle Version vom 7. Juni 2017, 12:52 Uhr
Interne Authentifizierung
Im folgenden wird die Authentifizierung zwischen den verschiedenen Microservices (MS) thematisiert. Es geht somit darum, wie ein MS sicherstellen kann, dass ein Request tatsächlich von einem anderen MS stammt. Dies wird vor allem für die Absicherung sensibler Daten benötigt, die via Webservices bereitgestellt werden.
Identität eines MS
Die Identität jedes MS wird über asymmetrische Verschlüsselung abgebildet. Hierbei verwenden wir den RSA Standard PKCS12, welcher weit verbreitet ist. Dies ermöglicht zum einen das Aufbauen einer HTTPS-Verbindung zwischen den verschiedenen MS und zum anderen können Tokens (siehe Konzept zu Shared Session) von MS eindeutig signiert werden.
Die Authentifizierung eines Microservice findet über den speziellen MS Sluice statt. Hierfür kennt Sluice alle CA‘s dieser und signiert diese mit Hilfe einer Trust-Chain. Um dem Prinzip des Loosely couplings zu folgen, werden die so erzeugten Tokens über Shared-Sessions ausgehandelt.
MS1 möchte gerne Daten von Drops bekommen:
- MS1 fragt Sluice nach einem Token für Drops, indem er ihm die gewünschten Kommunikationspartner( z.B. Drops) mitteilt. Authentifizierung mit eigenem KEY (PKCS12-RSA)
Sluice prüft Signatur von MS1 :
- Signatur OK → Sluice erstellt ein JWT, in dem er alle Informationen zu den Kommunikationspartnern speichert. Dazu gehören: signiertes CA, Name, Permissions …. . Weite wird auch das CA von MS1 signiert hinterlegt.
- ← response 200 JWT
- Signatur FAIL → Sluice erstellt Error-Code
- ← response Error-Code
MS1 hat jetzt ein Token:
- Anfrage an Drops mit Token im HTTP-Header.
- Drops kennt Sluice und traut der Chain im CA und der Signatur des Tokens.
- Drops sendet Daten.
HTTPS zwischen Microservices
Im Allgemeinen gilt, dass JWT nur verschlüsselt ausgetauscht werden sollen, was im Pool² über HTTPS realisiert wird. Dabei gilt:
- Sluice und MSn kennen sich und können sich auch gegenseitig anhand ihrer CA‘s authentifizieren. Somit können sie auch eine sichere HTTPS-Verbindung aushandeln.
- MSn bekommt das CA von z.B Drops im JWT von Sluice. Somit kann er Drops für sich authentifizieren.
- Drops bekommt im HTTPS-Handshake das CA von MSn, was er dank der Trust-Chain und dem CA von Sluice überprüfen kann.
- Tokens die nicht zur HTTPS-Verbingung passen werden nicht beachtet.