Wyświetlasz dokumentację Apigee Edge.
Zapoznaj się z dokumentacją Apigee X. info

Co
Umożliwia korzystanie z uproszczonego uwierzytelniania podstawowego w celu zapewnienia bezpieczeństwa na ostatnim etapie. Zasada pobiera nazwę użytkownika i hasło, koduje je w formacie Base64 i zapisuje wynikową wartość w zmiennej. Wynikowa wartość ma format Basic
Base64EncodedString
. Zwykle zapisujesz tę wartość w nagłówku HTTP, np. w nagłówku Authorization.
Zasada umożliwia też dekodowanie danych logowania przechowywanych w ciągu tekstowym zakodowanym w standardzie Base64 na nazwę użytkownika i hasło.
Film: ten film pokazuje, jak zakodować w formacie base64 nazwę użytkownika i hasło za pomocą zasady podstawowego uwierzytelniania.
Film: ten film pokazuje, jak zdekodować nazwę użytkownika i hasło zakodowane w standardzie Base64 za pomocą zasady podstawowego uwierzytelniania.
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 zakodowania są uzyskiwane ze zmiennych określonych przez atrybuty ref
w elementach <User>
i <Password>
. Zmienne muszą zostać ustawione, zanim ta zasada zostanie wykonana. Zmienne są zwykle wypełniane wartościami odczytywanymi z mapy klucz/wartość. Zapoznaj się z zasadami dotyczącymi operacji na mapach par klucz-wartość.
Ta konfiguracja powoduje dodanie do wychodzącego komunikatu żądania wysyłanego do serwera backendu nagłówka HTTP o nazwie Authorization, zgodnie z elementem <AssignTo>:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Wartości <User>
i <Password>
są łączone dwukropkiem przed zakodowaniem w formacie Base64.
Załóżmy, że masz mapę klucz-wartość z tym wpisem:
{ "encrypted" : true, "entry" : [ { "name" : "username", "value" : "MyUsername" }, { "name" : "password", "value" : "MyPassword" } ], "name" : "BasicAuthCredentials" }
Dołącz te zasady KeyValueMapOperations przed zasadami BasicAuthentication, aby móc wyodrębniać wartości elementów <User>
i <Password>
z pamięci klucz-wartość i wypełniać nimi zmienne 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 zasady dekodują nazwę użytkownika i hasło z Authorization
nagłówka HTTP zgodnie z elementem <Source>. Ciąg znaków zakodowany w formacie Base64 musi mieć postać Basic Base64EncodedString.
Zasada zapisuje zdekodowaną nazwę użytkownika w zmiennej request.header.username, a zdekodowane hasło w zmiennej request.header.password.
Informacje o zasadach uwierzytelniania podstawowego
Zasady te działają w 2 trybach:
- Kodowanie: koduje w formacie Base64 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 pamięci klucz/wartość, a następnie odczytywane z niej w czasie działania programu. Szczegółowe informacje o korzystaniu z pamięci klucz/wartość znajdziesz w zasadach dotyczących operacji na mapie klucz/wartość.
Odwołanie do elementu
Odwołanie do elementu opisuje elementy i atrybuty zasady 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>
Atrybuty <BasicAuthentication>
<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 |
Element <Operation>
Określa, czy zasady kodują lub dekodują dane logowania w formacie Base64.
<Operation>Encode</Operation>
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Ciąg tekstowy. Prawidłowe wartości:
|
Element <IgnoreUnresolvedVariables>
Jeśli zasada ma wartość true
, nie zgłasza błędu, gdy nie można rozpoznać zmiennej. W kontekście zasady BasicAuthentication to ustawienie ma zwykle wartość false
, ponieważ zwykle korzystne jest zgłaszanie błędu, jeśli w określonych zmiennych nie można znaleźć nazwy użytkownika ani hasła.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Domyślnie: | prawda |
Obecność: | Opcjonalny |
Typ: |
Wartość logiczna |
Element <User>
- Do kodowania użyj elementu
<User>
, aby określić zmienną zawierającą nazwę użytkownika. Wartości nazwy użytkownika i hasła są łączone dwukropkiem przed zakodowaniem w formacie Base64. - W przypadku dekodowania określ 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ślny | Obecność |
---|---|---|---|
ref |
Zmienna, z której zasada dynamicznie odczytuje nazwę użytkownika (kodowanie) lub do której zapisuje nazwę użytkownika (dekodowanie). |
Nie dotyczy | Wymagane |
Element <Password>
- W przypadku kodowania użyj elementu
<Password>
, aby określić zmienną zawierającą hasło. - W przypadku dekodowania określ zmienną, w której zapisane jest zdekodowane hasło.
<Password ref="request.queryparam.password" />
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane |
Typ: |
Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
ref |
Zmienna, z której zasada dynamicznie odczytuje hasło (kodowanie) lub do której zapisuje hasło (dekodowanie). |
Nie dotyczy | Wymagane |
Element <AssignTo>
W przypadku operacji Encode
określa zmienną docelową, która ma zostać ustawiona na wartość zakodowaną
wygenerowaną przez te zasady.
Poniższy przykład wskazuje, że zasady powinny ustawić nagłówek Authorization
wiadomości na wygenerowaną wartość:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
Domyślnie: | Nie dotyczy |
Obecność: | Wymagane w przypadku operacji Encode . |
Typ: |
Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
createNew | Określa, czy zasada ma zastąpić zmienną, jeśli jest już ustawiona.
Gdy wartość jest „false”, przypisanie do zmiennej następuje tylko wtedy, gdy zmienna jest obecnie nieustawiona (null). Jeśli wartość to „true”, przypisanie do zmiennej zawsze następuje. Zwykle ustawiasz ten atrybut na „false” (wartość domyślna). |
fałsz | Opcjonalny |
Element <Source>
Do dekodowania użyj zmiennej zawierającej ciąg znaków zakodowany w formacie Base64 w postaci Basic
Base64EncodedString
. Na przykład określ request.header.Authorization
, co odpowiada nagłówkowi Authorization.
<Source>request.header.Authorization</Source>
Domyślnie: | Nie dotyczy |
Obecność: | Wymagany w przypadku operacji dekodowania. |
Typ: |
Nie dotyczy |
Zmienne przepływu
Gdy zasada nie działa, ustawiana jest ta zmienna przepływu:
BasicAuthentication.{policy_name}.failed
(o wartości „true”)
Odniesienie do błędu
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. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami
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 | Do dekodowania, gdy przychodzący ciąg zakodowany w standardzie Base64 nie zawiera prawidłowej wartości lub nagłówek jest nieprawidłowy (np. nie zaczyna się od „Podstawowy”). | build |
steps.basicauthentication.UnresolvedVariable |
500 | Brak zmiennych źródłowych wymaganych do dekodowania lub kodowania. Ten błąd może spowodować
występuje 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 operacji nazwanej musi znajdować się element <User> . |
build |
PasswordRequired |
W operacji nazwanej musi znajdować się element <Password> . |
build |
AssignToRequired |
W operacji nazwanej musi znajdować się element <AssignTo> . |
build |
SourceRequired |
W operacji nazwanej musi znajdować się element <Source> . |
build |
Zmienne błędów
Te zmienne są ustawiane po wystąpieniu błędu działania. Więcej informacji znajdziesz w artykule Podstawowe informacje 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 czasu działania powyżej. Nazwa błędu to ostatnia część 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>