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">
The following table describes attributes that are common to all policy parent elements:
Attribute | Description | Default | Presence |
---|---|---|---|
name |
The internal name of the policy. The value of the Optionally, use the |
N/A | Required |
continueOnError |
Set to Set to |
false | Optional |
enabled |
Set to Set to |
true | Optional |
async |
This attribute is deprecated. |
false | Deprecated |
<DisplayName> element
Use in addition to the name
attribute to label the policy in the
management UI proxy editor with a different, natural-language name.
<DisplayName>Policy Display Name</DisplayName>
Default |
N/A If you omit this element, the value of the policy's |
---|---|
Presence | Optional |
Type | String |
<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
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle errors. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | On a decode when the incoming Base64 encoded string does not contain a valid value or the header is malformed (e.g., does not start with "Basic"). | build |
steps.basicauthentication.UnresolvedVariable |
500 | The required source variables for the decode or encode are not present. This error can
only occur if IgnoreUnresolvedVariables is false. |
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Occurs when | Fix |
---|---|---|
UserNameRequired |
The <User> element must be present for the named operation. |
build |
PasswordRequired |
The <Password> element must be present for the named operation. |
build |
AssignToRequired |
The <AssignTo> element must be present for the named operation. |
build |
SourceRequired |
The <Source> element must be present for the named operation. |
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | BasicAuthentication.BA-Authenticate.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
Example fault rule
<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>