© Chan2545/shutterstock.com
API-Authentifizierung mit Azure Active Directory - Teil 1

Web-APIs mit Tokens absichern


Best Practice bei der Authentifizierung von APIs stellen heute die sogenannten JSON Web Tokens (JWT) nach dem OAuth-Standard dar. Sie können von einem API schnell und in der Regel ohne zusätzliche Server-Roundtrips verifiziert werden. Aber wo bekomme ich solche JWTs für die Nutzer meines API her? Ein Token-Service wird benötigt, der Benutzeranmeldungen entgegennimmt, Identitäten verifiziert und passende Tokens ausstellt.

Microsoft stellt mit dem Identity Framework, Azure Active Directory (AAD) und AAD B2C die Infrastruktur für Authentifizierungen nach OAuth 2.0 und OpenID Connect (OIDC) aus der Cloud für uns zur Verfügung. Das ermöglicht neben der Authentifizierung mit Businesskonten aus dem Firmen-AD auch eine Nutzung in Szenarien, in denen private Endanwender, wie zum Beispiel Nutzer einer öffentlichen App, einbezogen werden sollen. Außerdem ist die Anbindung anderer Log-ins, zum Beispiel von Social-Media-Konten oder Apple- und Google-IDs möglich. Wer sein API im Microsoft-.NET-Umfeld baut, kann von der Integration dieser Infrastruktur in die gängigen Tools wie Visual Studio profitieren. Ein Blick auf Microsofts Token-Service lohnt sich schon deshalb.

Diese zweiteilige Artikelserie stellt die wesentlichen Konzepte dieser Microsoft Identity Platform vor. Im ersten Teil zeigen wir, welche Schritte notwendig sind, um die Authentifizierungsdienste von Azure zu nutzen, und wie auf Seiten unseres Anwendungs-Backends die Verarbeitung mit Hilfe eines .NET-Core-Web-API erfolgt. Auf die Details von OAuth/OIDC gehen wir dabei allerdings nur so weit ein, wie es für das Verständnis der Beispiele notwendig ist und verweisen für die genauen Hintergründe auf die offizielle Spezifikation unter [1]. Alle Schritte können mit der kostenlosen Basisvariante von Azure durchgeführt werden, für die Sie sich erforderlichenfalls unter https://azure.com anmelden können.

Ein Benutzerverzeichnis für das API

Applikationen und APIs, die die Identity Platform von Azure nutzen wollen, müssen in dem Benutzerverzeichnis (Directory) registriert werden, in dem die zu authentifizierenden Accounts geführt werden. Dabei erhält man eine eindeutige App-ID, die später Bestandteil der Zugriffstokens wird und sicherstellt, dass nur zueinander passende Applikationen und APIs miteinander in Kontakt treten. Da wir unser API später sowohl mit unseren Unternehmenskonten nutzen als auch beliebigen fremden Benutzern Zugriff erlauben wollen, müssen wir zunächst ein sogenanntes B2C-Verzeichnis anlegen. Ein Azure-Active-Directory-B2C-(AAD-B2C-)Verzeichnis ist ein eigener kleiner Azure-Mandant (Tenant), in dem die Benutzerkonten für unser API verwaltet werden. Loggen Sie sich dazu unter https://portal.azure.com in Ihren (Test-)Mandanten – im weiteren Verlauf „Hauptmandant“ genannt – ein und wählen Sie auf dem Startbildschirm die Kachel Ressource erstellen. Sie benötigen entsprechende Berechtigungen, um ein neues Verzeichnis erstellen zu können. Falls Sie nur eingeschränkten Zugriff auf Ihren Unternehmens-Tenant haben, empfiehlt sich zum Experimentieren die Einrichtung eines persönlichen kostenlosen Mandanten.

Suchen Sie den Ressourcentyp Azure Active Directory B2C und klicken Sie auf Erstellen, dann wählen Sie die erste Option Neuen AAD B2C-Mandanten erstellen. Ihr neues Verzeichnis benötigt einen beschreibenden Namen und einen eindeutigen URL. Hierbei ist die Domain onmicrosoft.com fest vorgegeben und Sie können nur den Namen der Subdomain wählen. Später kann das Verzeichnis auch mit Domainnamen Ihres Unternehmens verknüpft werden. Wählen Sie den Speicherort passend aus, er ist später nicht mehr zu ändern und bestimmt, in welcher Rechenzentrumsregion Ihre Verzeichnisdaten gehostet werden (Abb. 1).

schmitt_api_authentifizierung_1.tif_fmt1.jpgAbb. 1: Erstellen des B2C-Verzeichnisses im Azure Portal

Nachdem das Verzeichnis erstellt wurde, müssen Sie es noch mit Ihrem ursprünglichen Mandanten verbinden. Das ist erforderlich, weil der Service nur bis 50 000 Anmeldungen pro Monat kostenlos ist und bei Mehrnutzung eine Abrechnung über die Subscription des Hauptmandanten erfolgen würde. Klicken Sie in der Breadcrumb-Navigation am oberen Rand auf Neuen B2C-Mandanten erstellen oder mit vorhandenem Mandanten verknüpfen und wählen Sie jetzt die zweite Option. Im Einstellungsfenster wählen Sie das soeben erstellte Verzeichnis aus und geben eine „Ressourcengruppe“ an, über die die Abrechnung erfolgen soll. Falls Ihr Mandant noch keine Ressourcengruppen hat, erstellen Sie einfach direkt eine neue mit dem entsprechenden Link unter dem Auswahlfeld.

Jetzt ist unser neuer Mini-Tenant einsatzbereit und wir können unser Web-API darin registrieren. Wir wechseln dafür in den B2C-Tenant, indem wir oben rechts auf das Symbol für unser Benutzerkonto klicken und Verzeichnis wechseln auswählen. Unser neues Verzeichnis taucht unten in der Verzeichnisliste auf. Sollte das nicht der Fall sein, hilft meist ein Neuladen der Seite. Ab jetzt ist Disziplin gefragt: Es kommt darauf an, die richtige Aktion im richtigen Verzeichnis durchzuführen. Im Zweifel hilft ein Blick auf das Anmeldekontosymbol oben rechts: Der aktuelle Verzeichnisname steht dort immer unter Ihrer E-Mail-Adresse.

Registrierung muss sein

Als Nächstes registrieren wir unser Web-API bei dem neuen Verzeichnis. Falls Sie nicht schon automatisch auf der Seite für Azure AD B2C gelandet sind, steuern Sie diese am einfachsten durch Eingabe im Suchfeld am oberen Rand an. Wählen Sie App-Registrierungen aus dem Menü und erstellen Sie eine neue Registrierung. Benennen Sie diese mit „WebAPI1“ und tragen Sie beim Umleitungs-URI vorläufig die Adresse https://jwt.ms ein. Eigentlich benötigt ein API keinen Umleitungs-URI, da es naturgemäß keine eigene Benutzeroberfläche hat und selbst keine Tokens anfordert, sondern nur konsumiert. Wir wollen aber ein schnelles Erfolgserlebnis haben und uns ein Testtoken generieren lassen; dazu wird eine Adresse benötigt, die das Token empfängt. Belassen Sie alle anderen Einstellungen wie vorgegeben (Abb. 2).

schmitt_api_authentifizierung_2.tif_fmt1.jpgAbb. 2: Registrieren des Web-API im B2C-Mandanten

Wir gelangen automatisch in die Übersicht der Einstellungen für die Registrierung. Oben befinden sich die IDs, die für die Konfiguration im Web-API-Projekt benötigt werden. Diese werden wir im nächsten Schritt in unsem Beispiel-API einsetzen. Zunächst müssen aber noch ein paar Einstellungen erledigt werden.

Wählen Sie Authentifizierung aus dem Menü und k...

Neugierig geworden? Wir haben diese Angebote für dich:

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