© Liashko/Shutterstock.com
ASP.NET Web API: Sicherheit durch OAuth 2.0 und JWT

Auf Nummer sicher gehen


Web-APIs als zentrale Ressourcenzugriffspunkte erfreuen sich aufgrund ihrer positiven Eigenschaften zunehmender Beliebtheit. Das gilt sowohl für öffentliche Schnittstellen als auch für im Enterprise-Umfeld genutzte APIs. Doch mit zunehmender Verbreitung spielt auch das Thema Sicherheit eine immer größere Rolle. Der Artikel zeigt, welche Vor- bzw. Nachteile unterschiedliche Authentifizierungsverfahren bieten und wie sich ASP.NET Web API mittels eines eigenen Identitätsanbieters unter der Verwendung von OAuth und JWT gegen unbefugte Zugriffe absichern lässt.

Eigentlich ist das Thema Authentifizierung so alt wie das HTTP-Protokoll selbst. Doch die damit verbundenen Herausforderungen haben sich bis heute nicht geändert. Der Hauptgrund hierfür liegt in der statuslosen Natur des HTTP-Protokolls. Im Klartext bedeutet das: Meldet sich ein Benutzer mit seinen Zugangsdaten an einem Webserver an, so kann diese Anfrage authentifiziert werden. Der nächste Aufruf wäre jedoch wieder anonym, da eben keine permanente Verbindung zwischen Server und Client besteht. Es sei denn, es kommt zu einer erneuten Übermittlung der Benutzerinformationen.

Basic Authentication

Um sich diesem Problem zu stellen, erfand man die Basic Authentication – den einfachsten Weg, sich gegenüber einer Webapplikation zu authentifizieren. Dieses Verfahren basiert auf einem Challenge-Response-Modell und verwendet Standard-HTTP-Header zur Flusssteuerung. Vereinfacht dargestellt, fragt ein Client eine Website an, die eine Authentifizierung erfordert. Die Website liefert dann den HTTP-Statuscode 401 zurück sowie weitere Headerinformationen für die benötigten Authentifizierungsverfahren.

HTTP/1.1 401 Access Denied WWW-Authenticate: Basic realm="localhost" Content-Length: 0

Erhält der Browser die Antwort vom Webserver, öffnet sich in der Regel eine Eingabemaske, in die der Benutzername und das Passwort einzutragen sind. Benutzername und Passwort, getrennt durch einen Doppelpunkt, werden dann als Base64-encodierter String mittels des HTTP-Authorization-Headers an den Webserver übermittelt. Damit der Server weiß, um welchen Authentifizierungstyp es sich handelt, wird dem encodierten String Basic vorangestellt. Verläuft die Authentifizierung erfolgreich, werden die angeforderten Inhalte an den Client ausgeliefert.

GET /index.html HTTP/1.1 Host: localhost Authorization: Basic S2V2aW46V2llc2JhZGVu

Der Vorteil dieses Verfahrens liegt vor allem darin, dass weder Cookies noch Sessions benötigt werden. Des Weitere...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang