Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Co
Umożliwia użycie lekkiego uwierzytelniania podstawowego, które zapewnia najwyższy poziom bezpieczeństwa. Zasada pobiera nazwę użytkownika i hasło, koduje je w standardzie Base64 i zapisuje wynikową wartość w zmiennej. Wynikowa wartość ma postać Basic
Base64EncodedString
. Tę wartość zwykle zapisuje się w nagłówku HTTP, np. w nagłówku Authorization.
Zasada umożliwia też dekodowanie danych logowania przechowywanych w ciągu zakodowanym w standardzie Base64 na nazwę użytkownika i hasło.
Film: ten film pokazuje, jak zakodować nazwę użytkownika i hasło w base64 przy użyciu zasady uwierzytelniania podstawowego.
Film: ten film pokazuje, jak zdekodować nazwę użytkownika i hasło zakodowane w base64 przy użyciu zasady uwierzytelniania podstawowego.
Sample
Kodowanie wychodzące
<BasicAuthentication name="ApplyBasicAuthHeader"> <DisplayName>ApplyBasicAuthHeader</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="BasicAuth.credentials.username" /> <Password ref="BasicAuth.credentials.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> </BasicAuthentication>
W przykładowej konfiguracji zasady powyżej zakodowana nazwa użytkownika i hasło pochodzą ze zmiennych określonych przez atrybuty ref
w elementach <User>
i <Password>
. Zmienne należy ustawić przed uruchomieniem tej zasady. Zwykle zmienne są wypełniane wartościami odczytywanymi z mapy klucz-wartość. Zapoznaj się z zasadami dotyczącymi operacji mapowania par klucz-wartość.
Ta konfiguracja powoduje, że nagłówek HTTP o nazwie Authorization (określony przez element <AssignTo>) zostanie dodany do wychodzącej wiadomości żądania wysłanej do serwera backendu:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Wartości <User>
i <Password>
są łączone dwukropkiem przed kodowaniem Base64.
Załóżmy, że masz mapę klucz-wartość z takim wpisem:
{ "encrypted" : true, "entry" : [ { "name" : "username", "value" : "MyUsername" }, { "name" : "password", "value" : "MyPassword" } ], "name" : "BasicAuthCredentials" }
Załącz poniższe zasady KeyValueMapOperations przed zasadą BasicUwierzytelnianie, aby móc wyodrębniać wartości elementów <User>
i <Password>
z magazynu klucz-wartość oraz wypełniać je w zmiennych credentials.username
i credentials.password
.
<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials"> <Scope>apiproxy</Scope> <Get assignTo="credentials.username" index='1'> <Key> <Parameter>username</Parameter> </Key> </Get> <Get assignTo="credentials.password" index='1'> <Key> <Parameter>password</Parameter> </Key> </Get> </KeyValueMapOperations>
Dekodowanie przychodzące
<BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username" /> <Password ref="request.header.password" /> <Source>request.header.Authorization</Source> </BasicAuthentication>
W tym przykładzie zasad zasada dekoduje nazwę użytkownika i hasło z nagłówka HTTP Authorization
, zgodnie z elementem <Source>. Ciąg zakodowany w standardzie Base64 musi mieć format Basic Base64EncodedString.
Zasada zapisuje zdekodowaną nazwę użytkownika w zmiennej request.header.username i zdekodowane hasło w zmiennej request.header.password.
Informacje o zasadach uwierzytelniania podstawowego
Zasada ma 2 tryby działania:
- Kodowanie: Base64 koduje nazwę użytkownika i hasło przechowywane w zmiennych
- Dekoduj: dekoduje nazwę użytkownika i hasło z ciągu zakodowanego w standardzie Base64.
Nazwa użytkownika i hasło są zwykle przechowywane w magazynie par klucz-wartość, a następnie odczytywane z magazynu w czasie działania. Więcej informacji o używaniu magazynu klucz-wartość znajdziesz w zasadach operacji mapowania par klucz-wartość.
Odwołanie do elementu
Dokumentacja elementów opisuje elementy i atrybuty zasady uwierzytelniania podstawowego.
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1"> <DisplayName>Basic Authentication 1</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.queryparam.username" /> <Password ref="request.queryparam.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> <Source>request.header.Authorization</Source> </BasicAuthentication>
Atrybuty <podstawowe uwierzytelnianie>
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
Tabela poniżej zawiera opis atrybutów wspólnych dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw wartość Ustaw jako |
false | Opcjonalnie |
enabled |
Ustaw jako Ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
false | Wycofano |
Element <DisplayName>
Użyj oprócz atrybutu name
, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślne |
Nie dotyczy Jeśli pominiesz ten element, zostanie użyta wartość atrybutu |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Element <Operation>
Określa, czy zasada Base64 koduje, czy dekoduje dane logowania.
<Operation>Encode</Operation>
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Ciąg tekstowy. Prawidłowe wartości to m.in.:
|
Element <IgnorujNierozpoznane zmienne>
Gdy ma wartość true
, zasada nie zgłasza błędu, jeśli nie można znaleźć zmiennej. Jeśli to ustawienie jest używane w kontekście zasady uwierzytelniania podstawowego, to ustawienie ma zwykle wartość false
, ponieważ zalecane jest zgłoszenie błędu, gdy w podanych zmiennych nie można znaleźć nazwy użytkownika lub hasła.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Domyślnie: | prawda |
Obecność: | Opcjonalnie |
Typ: |
Wartość logiczna |
Element <User>
- W przypadku kodowania użyj elementu
<User>
, aby określić zmienną zawierającą nazwę użytkownika. Wartości nazwy użytkownika i hasła są połączone dwukropkiem przed kodowaniem Base64. - Na potrzeby dekodowania podaj zmienną, w której zapisana jest zdekodowana nazwa użytkownika.
<User ref="request.queryparam.username" />
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
referencja |
Zmienna, z której zasada dynamicznie odczytuje nazwę użytkownika (koduje) lub zapisuje nazwę użytkownika (dekoduje). |
Nie dotyczy | Wymagane |
Element <Password>
- W przypadku kodowania użyj elementu
<Password>
, aby określić zmienną zawierającą hasło. - Na potrzeby dekodowania podaj zmienną, w której zapisywane jest zdekodowane hasło.
<Password ref="request.queryparam.password" />
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
referencja |
Zmienna, z której zasada dynamicznie odczytuje hasło (zakoduje) lub zapisuje hasło (dekoduje). |
Nie dotyczy | Wymagane |
Element <AssignTo>
Określa zmienną docelową do ustawienia zakodowaną lub zdekodowaną wartością wygenerowaną przez tę zasadę.
Ten przykład wskazuje, że zasada powinna ustawić wygenerowaną wartość w nagłówku Authorization
wiadomości:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
createNew | Określa, czy zasada ma zastąpić zmienną, jeśli zmienna jest już ustawiona.
Gdy parametr ma wartość „false” (fałsz), przypisanie do zmiennej ma miejsce tylko wtedy, gdy zmienna jest aktualnie nieskonfigurowana (wartość null). Jeśli ma wartość „true” (prawda), przypisanie zmiennej jest zawsze wykonywane. Zazwyczaj ustawia się wartość „false” (fałsz) (wartość domyślna). |
false | Opcjonalnie |
Element <Source>
Do dekodowania: zmienna zawierająca ciąg zakodowany w standardzie Base64 w formacie Basic
Base64EncodedString
. Na przykład wpisz request.header.Authorization
, odpowiadający nagłówekowi Authorization.
<Source>request.header.Authorization</Source>
Domyślnie: | Nie dotyczy |
Obecność: | Wymagany do operacji dekodowania. |
Typ: |
Nie dotyczy |
Zmienne przepływu
W przypadku niepowodzenia zasady ustawiana jest ta zmienna przepływu:
BasicAuthentication.{policy_name}.failed
(z wartością true)
Informacje o błędach
W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły błędów do obsługi błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | Podczas dekodowania, gdy przychodzący ciąg zakodowany w standardzie Base64 nie zawiera prawidłowej wartości lub nagłówek ma nieprawidłowy format (np. nie zaczyna się od „Podstawowe”). | build |
steps.basicauthentication.UnresolvedVariable |
500 | Brak zmiennych źródłowych wymaganych do dekodowania lub kodowania. Ten błąd może wystąpić tylko wtedy, gdy IgnoreUnresolvedVariables ma wartość false (fałsz). |
build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
Nazwa błędu | Występuje, gdy | Napraw |
---|---|---|
UserNameRequired |
W nazwanej operacji musi być obecny element <User> . |
build |
PasswordRequired |
W nazwanej operacji musi być obecny element <Password> . |
build |
AssignToRequired |
W nazwanej operacji musi być obecny element <AssignTo> . |
build |
SourceRequired |
W nazwanej operacji musi być obecny element <Source> . |
build |
Zmienne błędów
Te zmienne są ustawiane, gdy wystąpi błąd środowiska wykonawczego. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z naruszeniem zasad.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy środowiska wykonawczego powyżej. Nazwa błędu to ostatnia część kodu. | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | BasicAuthentication.BA-Authenticate.failed = true |
Przykładowa odpowiedź na błąd
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
Przykładowa reguła błędu
<FaultRule name="Basic Authentication Faults"> <Step> <Name>AM-UnresolvedVariable</Name> <Condition>(fault.name Matches "UnresolvedVariable") </Condition> </Step> <Step> <Name>AM-AuthFailedResponse</Name> <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition> </Step> <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition> </FaultRule>