Die APIs absichern
Sicherheit
APIs und Microservices sollten stets unter HTTPS (HTTP abschalten!) ausgeführt und bei sensiblen Daten mit entsprechender Authentifizierung ausgestattet werden, vor allem dann wenn sie direkt vom Web aus erreichbar sind. Dabei gibt es drei Verfahren:
- Basic-Authentication: Man nutzt die WWW-Authenticate und Authorization-Header und schickt die Kredentialen (Benutzername/Kennwort) mit. Sehr einfach zu implementieren, allerdings wird bei jeder Anfrage ein Kennwort übertragen. Mehr dazu auf Wikipedia: hier
- Client-Zertifikat: Im TLS/SSL-Protokoll
(der Basis von HTTPS) weist sich der Server gegenüber dem Client per
Zertifikat aus. Gibt es bei der Verifikation Schwierigkeiten, erhält man
spezielle Warnungen, welche man auf Wunsch ignorieren kann (bspw. bei
jenen die als "self-signed" zu Entwicklerzwecken dienen).
Optional kann sich auch der Client beim Server per Attest identifizieren. Was in der Theorie recht anschaulich klingt, ist in der Praxis schwerfälliger umsetzbar: Es muss eine Zertifizierungsstelle (CA) eingerichtet, die jeweiligen Atteste erstellt und Programmcode entsprechend angepasst werden. Weitere Infos auch dazu auf Wikipedia: hier - Token: Das dritte und populärste System basiert auf einem gemeinsamen Geheimnis zwischen Client und Server. Dieser sogenannte Token
kann durch eine API-Abfrage erzeugt oder auf andere Weise dem Client
mitgeteilt werden. Er kann unbegrenzt gültig oder mit einer bestimmten
Lebensdauer versehen sein. Grundsätzlich handelt es sich um eine
Erweiterung des Cookie-Standards für REST APIs.
Wir werden uns dieses Konzept noch anhand des JSON Web Token-Formats ansehen.
Selbstverständlich
lassen sich die Sicherheitsaspekte auch per vorgeschaltetem Proxy bzw.
Load Balancer für mehrere APIs gleichzeitig lösen. Dies kann dem
Entwickler viel Arbeit abnehmen, vor allem dann, wenn die Dienste nicht
alle in derselben Technologie entwickelt wurden.
Zuletzt geändert: Mittwoch, 19. Februar 2020, 10:16