Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Umożliwia korzystanie z prostego uwierzytelniania podstawowego w
bezpieczeństwa na ostatnim etapie. Zasada pobiera nazwę użytkownika i hasło, koduje je w Base64 i zapisuje
wynikową wartość do zmiennej. Wynikowa wartość ma postać Basic
Base64EncodedString
. Wartość ta jest zazwyczaj zapisywana w nagłówku HTTP, jak
nagłówka Authorization
Ta zasada umożliwia też dekodowanie danych logowania przechowywanych w ciągu zakodowanym w standardzie Base64 jako nazwy użytkownika i hasło.
Film: ten film pokazuje, jak zakodować nazwę użytkownika za pomocą base64. przy użyciu zasad uwierzytelniania podstawowego.
Film: w tym filmie pokazujemy, jak zdekodować nazwę użytkownika zakodowaną w standardzie base64. przy użyciu zasad uwierzytelniania podstawowego.
Przykłady
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 zasad powyżej nazwa użytkownika i hasło do kodowania to
wyodrębnionych ze zmiennych określonych przez atrybuty ref
w
Elementy <User>
i <Password>
. Zmienne muszą być:
ustawianą przed wykonaniem tej zasady. Zwykle zmienne są zapełniane wartościami
z mapy klucz-wartość. Zobacz mapę par klucz-wartość
Zasady dotyczące operacji.
W wyniku tej konfiguracji powstaje nagłówek HTTP o nazwie Authorization – zgodnie z definicją w parametrze <AssignTo>, dodawane do wiadomości żądania wychodzącego wysyłanego do serwera backendu:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Wartości <User>
i <Password>
są połączone
z dwukropkiem przed kodowaniem Base64.
Załóżmy, że masz mapę klucz-wartość z następującym wpisem:
{ "encrypted" : true, "entry" : [ { "name" : "username", "value" : "MyUsername" }, { "name" : "password", "value" : "MyPassword" } ], "name" : "BasicAuthCredentials" }
Dołącz następujące zasady KeyValueMapOperations przed zasadą uwierzytelniania Basic
aby wyodrębnić wartości dla <User>
i
<Password>
elementów z magazynu klucz-wartość i wypełnij 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 tej przykładowej zasadzie dekoduje ona nazwę użytkownika i hasło ze
Nagłówek HTTP Authorization
określony przez element <Source>. Base64
zakodowany ciąg musi mieć format Basic Base64EncodedString.
Zasada zapisuje zdekodowaną nazwę użytkownika w zmiennej request.header.username i zdekodowane hasło do zmiennej request.header.password.
Informacje o zasadach uwierzytelniania podstawowego
Zasada może działać w 2 trybach:
- Kodowanie: Base64 koduje nazwę użytkownika i hasło zapisane w zmienne
- Dekoduj: dekoduje nazwę użytkownika i hasło z Ciąg znaków zakodowany w standardzie Base64
Nazwa użytkownika i hasło są zwykle przechowywane w magazynie par klucz-wartość i są odczytywane z wartości w magazynie pary klucz-wartość w czasie działania. Szczegółowe informacje na temat korzystania z magazynu par klucz-wartość znajdziesz w artykule Operacje na mapie klucz-wartość .
Odwołanie do elementu
Dokumentacja elementu opisuje elementy i atrybuty uwierzytelniania BasicAuthentication .
<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>
<BasicAuthentication> atrybuty
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<Operation> element
Określa, czy zasada Base64 koduje czy dekoduje dane logowania.
<Operation>Encode</Operation>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Ciąg tekstowy. Prawidłowe wartości to m.in.:
|
<IgnoreUnresolvedVariables> element
Gdy ustawisz wartość true
, zasada nie zwróci błędu, jeśli zmiennej nie można
. Gdy to ustawienie jest używane w kontekście zasady uwierzytelniania podstawowego, to ustawienie jest zwykle ustawiane
do false
, ponieważ zwykle warto zgłosić błąd w przypadku nazwy użytkownika lub
nie można znaleźć hasła w podanych zmiennych.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Domyślne: | prawda |
Obecność: | Opcjonalnie |
Typ: |
Wartość logiczna |
<User> element
- Do kodowania użyj elementu
<User>
, aby określić zmienną zawierający nazwę użytkownika. Wartości nazwy użytkownika i hasła są połączone dwukropkiem przed Kodowanie Base64. - Na potrzeby dekodowania określ zmienną, w której jest zapisywana zdekodowana nazwa użytkownika.
<User ref="request.queryparam.username" />
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
odsyłacz |
Zmienna, z której zasada dynamicznie odczytuje nazwę użytkownika (koduje ją) lub zapisuje nazwę użytkownika (dekodowanie). |
Nie dotyczy | Wymagane |
<Password> element
- Do kodowania użyj elementu
<Password>
, aby określić zmienną zawierający hasło. - Na potrzeby dekodowania określ zmienną, w której jest zapisywane zdekodowane hasło.
<Password ref="request.queryparam.password" />
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
odsyłacz |
Zmienna, z której zasada dynamicznie odczytuje hasło (zakodowuje) lub zapisuje hasła (dekodowanie). |
Nie dotyczy | Wymagane |
<AssignTo> element
Określa zmienną docelową do ustawienia zakodowaną lub zdekodowaną wartością wygenerowaną przez ten .
Poniższy przykład wskazuje, że zasada powinna ustawiać Authorization
nagłówka wiadomości do wygenerowanej wartości:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
createNew | Określa, czy zasada powinna zastąpić zmienną, jeśli zmienna jest już
ustawiony.
W przypadku wartości „false” przypisanie do zmiennej ma miejsce tylko wtedy, gdy zmienna obecnie nieskonfigurowane (null). Jeśli wartość to „true”, przypisanie do zmiennej jest zawsze wykonywane. Zwykle ustawiasz ten atrybut na wartość „false” (domyślnie). |
fałsz | Opcjonalnie |
<Source> element
Do dekodowania zmienna zawierająca ciąg zakodowany algorytmem Base64 w elemencie
formularz Basic
Base64EncodedString
. Przykład:
wpisz request.header.Authorization
, co odpowiada nagłówkowi Authorization.
<Source>request.header.Authorization</Source>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane do dekodowania. |
Typ: |
Nie dotyczy |
Zmienne przepływu
W przypadku niepowodzenia zasady jest ustawiana ta zmienna przepływu:
BasicAuthentication.{policy_name}.failed
(z wartością true)
Informacje o błędzie
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Te informacje są ważne, jeśli tworzysz reguły dotyczące błędów, aby obsługiwać błędy. Więcej informacji znajdziesz w artykułach Więcej informacji o błędach związanych z naruszeniem zasad i Rozwiązywanie problemó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 formacie Base64 nie zawiera prawidłowej wartości lub nagłówek jest nieprawidłowy (np. nie zaczyna się od „Basic”). | 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ść fałsz. |
build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego tę zasadę.
Nazwa błędu | Występuje, gdy | Napraw |
---|---|---|
UserNameRequired |
W przypadku operacji nazwanej musi być obecny element <User> . |
build |
PasswordRequired |
W przypadku operacji nazwanej musi być obecny element <Password> . |
build |
AssignToRequired |
W operacji nazwanej musi znajdować się element <AssignTo> . |
build |
SourceRequired |
W przypadku operacji nazwanej musi być obecny element <Source> . |
build |
Zmienne dotyczące błędów
Te zmienne są ustawiane po wystąpieniu błędu działania. Więcej informacji znajdziesz w artykule Więcej informacji o błędach związanych z naruszeniem zasad.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu, jak podano w tabeli Błędy środowiska wykonawczego powyżej. Nazwa błędu to ostatni element kodu błędu. | 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>