YARP Docsv2.3
Τεκμηρίωση/Ασφάλεια/Έλεγχος ταυτότητας & εξουσιοδότηση

Έλεγχος ταυτότητας & εξουσιοδότηση

Ο αντίστροφος διακομιστής μεσολάβησης μπορεί να χρησιμοποιηθεί για τον έλεγχο ταυτότητας και την εξουσιοδότηση αιτημάτων πριν αυτά μεσολαβηθούν

Έλεγχος ταυτότητας και εξουσιοδότηση στο YARP

Εισαγωγή

Ο αντίστροφος διακομιστής μεσολάβησης μπορεί να χρησιμοποιηθεί για τον έλεγχο ταυτότητας και την εξουσιοδότηση αιτημάτων, πριν αυτά μεσολαβηθούν προς τους διακομιστές προορισμού. Αυτό μπορεί να μειώσει το φόρτο στους διακομιστές προορισμού, να προσθέσει ένα επιπλέον επίπεδο προστασίας, και να διασφαλίσει ότι εφαρμόζονται συνεπείς πολιτικές σε όλες τις εφαρμογές σας.

Προεπιλογές

Δεν εκτελείται κανένας έλεγχος ταυτότητας ή εξουσιοδότηση στα αιτήματα, εκτός αν ενεργοποιηθεί στη διαμόρφωση της διαδρομής ή της εφαρμογής.

Διαμόρφωση

Οι πολιτικές εξουσιοδότησης μπορούν να καθοριστούν ανά διαδρομή, μέσω του RouteConfig.AuthorizationPolicy, και μπορούν να δεσμευτούν (bind) από τις ενότητες Routes του αρχείου διαμόρφωσης. Όπως και με τις άλλες ιδιότητες διαδρομής, αυτό μπορεί να τροποποιηθεί και να επαναφορτωθεί χωρίς επανεκκίνηση του διακομιστή μεσολάβησης. Τα ονόματα πολιτικών δεν κάνουν διάκριση πεζών-κεφαλαίων.

Παράδειγμα:

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

Ο ορισμός της τιμής default στην παράμετρο εξουσιοδότησης μιας διαδρομής σημαίνει ότι αυτή η διαδρομή θα χρησιμοποιήσει την πολιτική που ορίζεται στο AuthorizationOptions.DefaultPolicy. Αυτή η πολιτική είναι προδιαμορφωμένη ώστε να απαιτεί χρήστες με ελεγμένη ταυτότητα.

Anonymous

Ο ορισμός της τιμής anonymous στην παράμετρο εξουσιοδότησης μιας διαδρομής σημαίνει ότι αυτή η διαδρομή δεν

θα απαιτεί εξουσιοδότηση, ανεξάρτητα από οποιαδήποτε άλλη διαμόρφωση στην εφαρμογή, όπως το

FallbackPolicy.

FallbackPolicy

Το AuthorizationOptions.FallbackPolicy είναι η πολιτική που θα χρησιμοποιηθεί για κάθε αίτημα ή διαδρομή που δεν έχει διαμορφωθεί με πολιτική. Το FallbackPolicy δεν έχει τιμή από προεπιλογή, οπότε κάθε αίτημα επιτρέπεται.

Μεταφορά διαπιστευτηρίων

Ακόμα και αφού ένα αίτημα έχει εξουσιοδοτηθεί στον διακομιστή μεσολάβησης, ο διακομιστής προορισμού μπορεί να χρειάζεται ακόμα να γνωρίζει ποιος είναι ο χρήστης (έλεγχος ταυτότητας) και τι επιτρέπεται να κάνει (εξουσιοδότηση). Ο τρόπος με τον οποίο θα μεταφέρετε αυτές τις πληροφορίες εξαρτάται από τον τύπο του ελέγχου ταυτότητας που χρησιμοποιείται.

Αυτοί οι τύποι ελέγχου ταυτότητας περνούν ήδη τις τιμές τους στις κεφαλίδες αιτήματος, και αυτές θα μεταφερθούν στον διακομιστή προορισμού από προεπιλογή. Αυτός ο διακομιστής θα πρέπει ακόμα να επαληθεύσει και να ερμηνεύσει αυτές τις τιμές, γεγονός που προκαλεί κάποια διπλή εργασία.

OAuth2, OpenIdConnect, WsFederation

Αυτά τα πρωτόκολλα χρησιμοποιούνται συνήθως με απομακρυσμένους παρόχους ταυτότητας. Η διαδικασία ελέγχου ταυτότητας μπορεί να διαμορφωθεί στην εφαρμογή του διακομιστή μεσολάβησης, και θα καταλήξει σε ένα cookie ελέγχου ταυτότητας. Αυτό το cookie θα μεταφερθεί στον διακομιστή προορισμού ως κανονική κεφαλίδα αιτήματος.

Windows, Negotiate, NTLM, Kerberos

Αυτοί οι τύποι ελέγχου ταυτότητας συνδέονται συχνά με μια συγκεκριμένη σύνδεση. Δεν υποστηρίζονται ως μέσο ελέγχου ταυτότητας ενός χρήστη σε έναν διακομιστή προορισμού πίσω από τον διακομιστή μεσολάβησης YARP (δείτε #166). Μπορούν να χρησιμοποιηθούν για τον έλεγχο ταυτότητας ενός εισερχόμενου αιτήματος προς τον διακομιστή μεσολάβησης, αλλά αυτές οι πληροφορίες ταυτότητας θα πρέπει να μεταδοθούν στον διακομιστή προορισμού με άλλη μορφή. Μπορούν επίσης να χρησιμοποιηθούν για τον έλεγχο ταυτότητας του ίδιου του διακομιστή μεσολάβησης προς τους διακομιστές προορισμού, αλλά μόνο ως ο δικός του χρήστης του διακομιστή μεσολάβησης· η πλαστοπροσωπία (impersonation) του client δεν υποστηρίζεται.

Πιστοποιητικά client

Τα πιστοποιητικά client είναι ένα χαρακτηριστικό του TLS και διαπραγματεύονται ως μέρος μιας σύνδεσης. Δείτε αυτή την

τεκμηρίωση για πρόσθετες πληροφορίες. Το πιστοποιητικό μπορεί να προωθηθεί στον διακομιστή προορισμού ως

κεφαλίδα HTTP, χρησιμοποιώντας τον μετασχηματισμό ClientCert.

Εναλλαγή τύπων ελέγχου ταυτότητας

Τύποι ελέγχου ταυτότητας όπως το Windows, που δεν μεταφέρονται φυσικά στον διακομιστή προορισμού, θα χρειαστεί να μετατραπούν στον διακομιστή μεσολάβησης σε μια εναλλακτική μορφή. Για παράδειγμα, ένα JWT bearer token μπορεί να δημιουργηθεί με τις πληροφορίες του χρήστη, και να οριστεί στο αίτημα του διακομιστή μεσολάβησης.

Αυτές οι εναλλαγές μπορούν να πραγματοποιηθούν χρησιμοποιώντας προσαρμοσμένους μετασχηματισμούς αιτήματος. Λεπτομερή παραδείγματα μπορούν να αναπτυχθούν για συγκεκριμένα σενάρια, αν υπάρχει αρκετό ενδιαφέρον από την κοινότητα. Χρειαζόμαστε περισσότερη ανατροφοδότηση από την κοινότητα σχετικά με το πώς θέλετε να μετατρέπετε και να μεταφέρετε πληροφορίες ταυτότητας.

Σημείωση

Ο συγγραφέας δημιούργησε αυτό το άρθρο με τη βοήθεια AI. Μάθετε περισσότερα

Προσαρμογή από Microsoft Learn , με άδεια CC BY 4.0 .