YARP Docsv2.3
Dokumentation/Sicherheit/Authentifizierung & Autorisierung

Authentifizierung & Autorisierung

Der Reverse Proxy kann verwendet werden, um Anforderungen zu authentifizieren und zu autorisieren, bevor sie weitergeleitet werden

YARP-Authentifizierung und -Autorisierung

Einführung

Der Reverse Proxy kann verwendet werden, um Anforderungen zu authentifizieren und zu autorisieren, bevor sie an die Zielserver weitergeleitet werden. Dadurch kann die Auslastung der Zielserver reduziert, eine zusätzliche Schutzschicht hinzugefügt und die konsistente Umsetzung von Richtlinien in Ihren Anwendungen sichergestellt werden.

Standardverhalten

Es wird keine Authentifizierung oder Autorisierung für Anforderungen durchgeführt, sofern dies nicht in der Routen- oder Anwendungskonfiguration aktiviert ist.

Konfiguration

Autorisierungsrichtlinien können pro Route über RouteConfig.AuthorizationPolicy angegeben und aus den Routes-Abschnitten der Konfigurationsdatei gebunden werden. Wie bei anderen Route-Eigenschaften kann dies geändert und neu geladen werden, ohne den Proxy neu zu starten. Bei Richtliniennamen wird die Groß-/Kleinschreibung nicht beachtet.

Beispiel:

JSON{
   "ReverseProxy": {
      "Routes": {
          "route1" : {
             "ClusterId": "cluster1",
             "AuthorizationPolicy": "customPolicy",
             "Match": {
                "Hosts": [ "localhost" ]
             }
          }
      },
      "Clusters": {
          "cluster1": {
             "Destinations": {
                "cluster1/destination1": {
                    "Address": "https://localhost:10001/"
                }
             }
          }
      }
             }
          }
Authorization policies are an ASP.NET Core concept that the proxy utilizes. The proxy provides
the above configuration to specify a policy per route and the rest is handled by existing
ASP.NET Core authentication and authorization components.
Authorization policies can be configured in the application as follows:
   services.AddAuthorization(options =>
   {
          options.AddPolicy("customPolicy", policy =>
                 policy.RequireAuthenticatedUser());
   });
In Program.cs add the Authorization and Authentication middleware.
   app.UseAuthentication();
   app.UseAuthorization();
   app.MapReverseProxy();
See the Authentication docs for setting up your preferred kind of authentication.
Special values:
In addition to custom policy names, there are two special values that can be specified in a
route's authorization parameter: default and anonymous . ASP.NET Core also has a
FallbackPolicy setting that applies to routes that do not specify a policy.

DefaultPolicy

Wird im Autorisierungsparameter einer Route der Wert default angegeben, verwendet diese Route die in AuthorizationOptions.DefaultPolicy definierte Richtlinie. Diese Richtlinie ist standardmäßig so konfiguriert, dass authentifizierte Benutzer erforderlich sind.

Anonymous

Wird im Autorisierungsparameter einer Route der Wert anonymous angegeben, bedeutet dies, dass für diese Route keine Autorisierung erforderlich ist,

unabhängig von jeder anderen Konfiguration in der Anwendung, wie etwa der

FallbackPolicy.

FallbackPolicy

AuthorizationOptions.FallbackPolicy ist die Richtlinie, die für jede Anforderung oder Route verwendet wird, die nicht mit einer Richtlinie konfiguriert wurde. FallbackPolicy hat standardmäßig keinen Wert, sodass jede Anforderung zugelassen wird.

Weiterleiten von Anmeldeinformationen

Auch nachdem eine Anforderung im Proxy autorisiert wurde, muss der Zielserver möglicherweise weiterhin wissen, wer der Benutzer ist (Authentifizierung) und was er tun darf (Autorisierung). Wie Sie diese Informationen weiterleiten, hängt von der verwendeten Art der Authentifizierung ab.

Diese Authentifizierungstypen übergeben ihre Werte bereits in den Anforderungsheadern, und diese werden standardmäßig an den Zielserver weitergeleitet. Dieser Server muss die Werte weiterhin überprüfen und interpretieren, was zu einem gewissen Mehraufwand führt.

OAuth2, OpenIdConnect, WsFederation

Diese Protokolle werden häufig mit externen Identitätsanbietern verwendet. Der Authentifizierungsprozess kann in der Proxyanwendung konfiguriert werden und führt zu einem Authentifizierungscookie. Dieses Cookie wird als normaler Anforderungsheader an den Zielserver weitergeleitet.

Windows, Negotiate, NTLM, Kerberos

Diese Authentifizierungstypen sind häufig an eine bestimmte Verbindung gebunden. Sie werden nicht als Mittel zur Authentifizierung eines Benutzers auf einem Zielserver hinter dem YARP-Proxy unterstützt (siehe #166 . Sie können verwendet werden, um eine eingehende Anforderung beim Proxy zu authentifizieren, doch diese Identitätsinformationen müssen dem Zielserver in anderer Form mitgeteilt werden. Sie können auch verwendet werden, um den Proxy gegenüber den Zielservern zu authentifizieren, allerdings nur als eigener Benutzer des Proxys – die Identitätsübernahme des Clients wird nicht unterstützt.

Clientzertifikate

Clientzertifikate sind eine TLS-Funktion und werden im Rahmen einer Verbindung ausgehandelt. Weitere Informationen finden Sie in dieser Dokumentation

zu diesem Thema. Das Zertifikat kann dem Zielserver als

HTTP-Header übergeben werden – unter Verwendung der ClientCert-Transformation.

Authentifizierungstypen austauschen

Authentifizierungstypen wie Windows, die nicht auf natürliche Weise an den Zielserver weitergeleitet werden, müssen im Proxy in eine alternative Form umgewandelt werden. Beispielsweise kann ein JWT-Bearer-Token mit den Benutzerinformationen erstellt und in der Proxyanforderung festgelegt werden.

Diese Umwandlungen können mithilfe benutzerdefinierter Anforderungstransformationen durchgeführt werden. Bei ausreichendem Interesse der Community können detaillierte Beispiele für bestimmte Szenarien entwickelt werden. Wir benötigen mehr Feedback aus der Community dazu, wie Sie Identitätsinformationen umwandeln und weiterleiten möchten.

Hinweis

Dieser Artikel wurde mit Unterstützung von KI erstellt. Weitere Informationen

Angepasst von Microsoft Learn , lizenziert unter CC BY 4.0 .