Implementieren von Authentifizierung und Autorisierung in Azure Container Apps

Abgeschlossen

Azure Container Apps bietet integrierte Authentifizierungs- und Autorisierungsfunktionen, um Ihre externe, für eingehenden Datenverkehr aktivierte Container-App mit minimalem oder ganz ohne Code zu schützen. Die integrierte Authentifizierungsfunktion für Container Apps kann Ihnen Zeit und Mühe ersparen, indem sie eine sofort einsatzbereite Authentifizierung mit föderierten Identitätsanbietern bietet, sodass Sie sich auf den Rest Ihrer Anwendung konzentrieren können.

  • Azure Container Apps bietet Zugriff auf verschiedene integrierte Authentifizierungsanbieter.
  • Die integrierten Authentifizierungsfeatures erfordern kein/e bestimmte/s Sprache, SDK, Sicherheitskompetenz oder sogar Code, den Sie schreiben müssen.

Dieses Feature sollte nur mit HTTPS verwendet werden. Stellen Sie sicher, dass allowInsecure in der Eingangskonfiguration Ihrer Container-App deaktiviert ist. Sie können Ihre Container-App für die Authentifizierung mit oder ohne Einschränkung des Zugriffs auf Ihre Standortinhalte und APIs verwenden.

  • Wenn Sie den App-Zugriff nur auf authentifizierte Benutzer einschränken möchten, legen Sie die Einstellung Zugriff einschränken auf Authentifizierung erforderlich fest.
  • Um den Zugriff zu authentifizieren, aber nicht einzuschränken, legen Sie die Einstellung Zugriff einschränken auf Nicht authentifizierten Zugriff zulassen fest.

Identitätsanbieter

Container Apps nutzt die Verbundidentität. Dabei werden die Benutzeridentitäten und der Authentifizierungsablauf von einem externen Identitätsanbieter für Sie verwaltet. Die folgenden Identitätsanbieter sind standardmäßig verfügbar:

Anbieter Anmeldungsendpunkt Leitfäden zur Vorgehensweise
Microsoft Identitätsplattform /.auth/login/aad Microsoft Identitätsplattform
Facebook /.auth/login/facebook Facebook
GitHub /.auth/login/github GitHub
Google /.auth/login/google Google
X /.auth/login/twitter X
Ein beliebiger OpenID Connect-Anbieter /.auth/login/<providerName> OpenID Connect

Wenn Sie einen dieser Anbieter verwenden, ist der entsprechende Anmeldungsendpunkt für die Benutzerauthentifizierung und die Überprüfung von Authentifizierungstoken vom Anbieter verfügbar. Sie können Ihren Benutzern eine beliebige Anzahl von diesen Anbieteroptionen bereitstellen.

Featurearchitektur

Die Middlewarekomponente für die Authentifizierung und Autorisierung ist ein Feature der Plattform, das als Sidecar-Container auf jedem Replikat in Ihrer Anwendung ausgeführt wird. Wenn diese Komponente aktiviert ist, durchlaufen alle eingehenden HTTP-Anforderungen die Sicherheitsebene, bevor sie von Ihrer Anwendung verarbeitet werden.

Abbildung: Anforderungen werden von einem Sidecar-Container abgefangen, der mit Identitätsanbietern interagiert, bevor Datenverkehr an den App-Container zugelassen wird

Von der Middleware der Plattform werden mehrere Vorgänge für Ihre App durchgeführt:

  • Authentifizieren von Benutzerinnen und Benutzern und Clients mit den angegebenen Identitätsanbietern
  • Verwaltung der authentifizierten Sitzung
  • Einfügen von Identitätsinformationen in HTTP-Anforderungsheader

Das Modul für Authentifizierung und Autorisierung wird in einem separaten Container isoliert von Ihrem Anwendungscode ausgeführt. Da der Sicherheitscontainer nicht In-Process ausgeführt wird, ist keine direkte Integration in Frameworks bestimmter Sprachen möglich. Relevante Informationen, die Ihre App benötigt, werden jedoch in Anforderungsheadern bereitgestellt.

Authentifizierungsfluss

Der Authentifizierungsablauf gilt für alle Anbieter, unterscheidet sich jedoch abhängig davon, ob die Anmeldung mit dem SDK des Anbieters erfolgen soll:

  • Ohne Anbieter-SDK (serverseitig gesteuerter Flow oder Serverflow): Die Anwendung delegiert die Verbundanmeldung an Container Apps. Delegation ist der Normalfall bei Browser-Apps, wodurch dem Benutzer die Anmeldeseite des Anbieters angezeigt wird.

  • Mit Anbieter-SDK (clientseitig gesteuerter Flow oder Clientflow): Die Anwendung meldet Benutzer manuell beim Anbieter an und sendet dann das Authentifizierungstoken zur Überprüfung an Container Apps. Dieser Ansatz ist typisch für browserlose Apps, die dem Benutzer keine Anmeldeseite des Anbieters präsentieren. Ein Beispiel ist eine native mobile App, die Benutzer mit dem SDK des Anbieters anmeldet.