Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
- Przychodzące uwierzytelnianie i autoryzacja: potwierdzanie asercji SAML
zasada
Typ zasady SAML umożliwia serwerom proxy interfejsu API walidację asercji SAML podłączonych do przychodzące żądania SOAP. Zasada SAML weryfikuje wiadomości przychodzące zawierające podpisane cyfrowo asercja SAML, odrzuca je, jeśli są nieprawidłowe, i ustawia zmienne, które zezwalanie na dodatkowe zasady lub same usługi backendu w celu dalszej weryfikacji informacji. w sferze asercji. - Generowanie tokena wychodzącego: generowanie zasad asercji SAML
Typ zasady SAML umożliwia serwerom proxy interfejsu API dołączanie potwierdzeń SAML do wychodzących żądań XML. Następnie dostępne są asercje, aby umożliwić usługom backendu możliwość stosowania dalszych zabezpieczeń uwierzytelnianie i autoryzacja.
Przykłady
Wygeneruj asercję SAML
<GenerateSAMLAssertion name="SAML" ignoreContentType="false"> <CanonicalizationAlgorithm /> <Issuer ref="reference">Issuer name</Issuer> <KeyStore> <Name ref="reference">keystorename</Name> <Alias ref="reference">alias</Alias> </KeyStore> <OutputVariable> <FlowVariable>assertion.content</FlowVariable> <Message name="request"> <Namespaces> <Namespace prefix="test">http://www.example.com/test</Namespace> </Namespaces> <XPath>/envelope/header</XPath> </Message> </OutputVariable> <SignatureAlgorithm /> <Subject ref="reference">Subject name</Subject> <Template ignoreUnresolvedVariables="false"> <!-- A lot of XML goes here, in CDATA, with {} around each variable --> </Template> </GenerateSAMLAssertion>
Generowanie potwierdzenia SAML
Weryfikacja asercji SAML
<ValidateSAMLAssertion name="SAML" ignoreContentType="false"> <Source name="request"> <Namespaces> <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace> <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace> <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace> </Namespaces> <AssertionXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</AssertionXPath> <SignedElementXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</SignedElementXPath> </Source> <TrustStore>TrustStoreName</TrustStore> <RemoveAssertion>false</RemoveAssertion> </ValidateSAMLAssertion>
Weryfikowanie asercji SAML
Odwołanie do elementu
Wygeneruj asercję SAML
Nazwa pola | Opis | ||
---|---|---|---|
name atrybut |
Nazwa instancji zasady. Nazwa musi być unikalna w
Twojej organizacji. Nazwa może zawierać tylko te znaki: A-Z0-9._\-$
% . Interfejs zarządzania wymusza jednak dodatkowe ograniczenia, takie jak:
automatycznie usuwa znaki niealfanumeryczne. |
||
ignoreContentType atrybut |
Wartość logiczna, która może być ustawiona na true lub false . Domyślnie atrybut
asercja nie zostanie wygenerowana, jeśli typem treści wiadomości nie jest XML
Content-Type (Typ treści). Jeśli ustawisz wartość true , komunikat będzie traktowany jako XML.
niezależnie od typu treści. |
||
Issuer |
Unikalny identyfikator dostawcy tożsamości. Jeśli opcjonalny
ref
będzie podany, więc wartość Issuer zostanie przypisana w czasie działania na podstawie
określonej zmiennej. Jeśli opcjonalny atrybut ref nie jest dostępny,
zostanie użyta wartość Issuer.
|
||
KeyStore |
Nazwa magazynu kluczy zawierającego klucz prywatny i alias klucza prywatnego
używane do cyfrowego podpisywania asercji SAML.
|
||
OutputVariable |
|||
FlowVariable |
|||
Message |
Cel zasady. Prawidłowe wartości to message , request ,
i response . Gdy zasada ma wartość message , zasada warunkowo
pobiera obiekt wiadomości na podstawie punktu załącznika zasady. Po podłączeniu do
w przepływie żądania, zasada powoduje, że message przesyła żądanie, a po podłączeniu
w przepływie odpowiedzi, zasada nakazuje message . |
||
XPath |
Wyrażenie XPath wskazujące element w wychodzącym dokumencie XML, do którego zasada dołączy potwierdzenie SAML. | ||
SignatureAlgorithm |
SHA1 lub SHA256 | ||
Subject |
Unikalny identyfikator podmiotu potwierdzenia SAML. Jeśli opcjonalny element
Jeśli istnieje atrybut
ref , wartość Temat zostanie przypisana na poziomie
na podstawie określonej zmiennej. Jeśli opcjonalny atrybut ref to
obecna, zostanie użyta wartość Subject.
|
||
Template |
Jeśli ten szablon jest dostępny, potwierdzenie zostanie wygenerowane przez uruchomienie tego szablonu, zastępując
wszystko jest oznaczone odpowiednią zmienną
{} , a następnie cyfrowo
podpisać wynik. Szablon jest przetwarzany zgodnie z regułami zasady AssignMessage.
Zobacz Przypisywanie
Zasady dotyczące wiadomości.
|
Weryfikacja asercji SAML
Nazwa pola | Opis |
---|---|
name atrybut |
Nazwa instancji zasady. Nazwa musi być unikalna w organizacji.
Nazwa może zawierać tylko te znaki:
A-Z0-9._\-$ % .
Interfejs zarządzania wymusza jednak dodatkowe ograniczenia, takie jak automatyczne
usuwając znaki niealfanumeryczne.
|
ignoreContentType atrybut |
Wartość logiczna, która może być ustawiona na true lub false . Domyślnie atrybut
asercja nie zostanie wygenerowana, jeśli typem treści wiadomości nie jest XML
Content-Type (Typ treści). Jeśli ustawisz wartość true , komunikat będzie traktowany jako XML.
niezależnie od typu treści. |
Source |
Cel zasady. Prawidłowe wartości to message , request ,
i response . Gdy zasada ma wartość message , zasada warunkowo
pobiera obiekt wiadomości na podstawie punktu załącznika zasady. Po podłączeniu do
w przepływie żądania, zasada powoduje, że message przesyła żądanie, a po podłączeniu
w przepływie odpowiedzi, zasada nakazuje message . |
XPath |
Wycofano. Dziecko konta
Source . Używaj
AssertionXPath i SignedElementXPath .
|
AssertionXPath |
Dziecko konta
Source . Wyrażenie XPath, które wskazuje element w
przychodzący dokument XML, z którego zasada może wyodrębnić potwierdzenie SAML.
|
SignedElementXPath |
Dziecko konta
Source . Wyrażenie XPath, które wskazuje element w
przychodzący dokument XML, z którego zasada może wyodrębnić podpisany element. Ten
może być inny lub taki sam jak ścieżka XPath dla elementu AssertionXPath .
|
TrustStore |
Nazwa magazynu TrustStore, który zawiera zaufane certyfikaty X.509 używane do weryfikacji
podpisów cyfrowych w asercjach SAML.
|
RemoveAssertion |
Wartość logiczna, która może być ustawiona na
true lub false . Kiedy
true , potwierdzenie SAML zostanie usunięte z wiadomości żądania przed
wiadomość jest przekazywana do usługi backendu.
|
Zastosowanie
Specyfikacja SAML (Security Assertion Markup Language) definiuje formaty i protokoły, pozwalają aplikacjom na wymianę informacji w formacie XML na potrzeby uwierzytelniania autoryzacji.
„Potwierdzenie zabezpieczeń” to zaufany token opisujący atrybut aplikacji, użytkownika lub innego uczestnika transakcji. 2 potwierdzenia zabezpieczeń są zarządzane i wykorzystywane przez typy podmiotów:
- Dostawcy tożsamości: generuj potwierdzenia zabezpieczeń w imieniu uczestników
- Dostawcy usług: weryfikuj potwierdzenia bezpieczeństwa za pomocą zaufanych relacji z tożsamością usługodawcy
Platforma interfejsów API może działać jako dostawca tożsamości i usługodawca. Pełni ona rolę dostawcy tożsamości przez generowanie asercji i dołączanie ich do żądań wiadomości, dzięki czemu te asercje dostępne do przetwarzania przez usługi backendu. Jest to dostawca usług, który: weryfikacji asercji w wiadomościach przychodzących.
Typ zasad SAML obsługuje asercje SAML zgodne z wersją 2.0 funkcji SAML Core Specyfikacja i wersja 1.0 specyfikacji profilu tokenów SAML WS-Security.
Wygeneruj asercję SAML
Przetwarzanie zasad:
- Jeśli komunikat nie jest w formacie XML, a parametr ignoreContentType nie ma wartości
true
, zgłosić błąd. - Jeśli "Szablon" a następnie przetwórz szablon zgodnie z opisem zasady AssignMessage. Jeśli brakuje jakichś zmiennych, a parametr ignoreUnresolvedvariables nie jest ustawiony, zgłoś błąd.
- Jeśli "Szablon" nie jest ustawiona, utwórz asercję, która zawiera wartości argumentu Parametry podmiotu i wystawcy lub ich odwołania.
- Podpisz asercję za pomocą podanego klucza.
- Dodaj potwierdzenie do wiadomości w podanej ścieżce XPath.
Weryfikacja asercji SAML
Przetwarzanie zasad:
- Zasada sprawdza wiadomość przychodzącą, aby zweryfikować, czy typ mediów żądania to XML.
sprawdzanie, czy typ treści pasuje do formatów
text/(.*+)?xml
lubapplication/(.*+)?xml
Jeśli typem nośnika jest inny niż XML i<IgnoreContentType>
nie jest skonfigurowany, zasada będzie zgłaszać błąd. - Zasada przeanalizuje kod XML. Jeśli analiza się nie uda, spowoduje to zgłoszenie błędu.
- Zasada wyodrębnia podpisany element i asercję przy użyciu odpowiednich ścieżek XPath
(
<SignedElementXPath>
i<AssertionXPath>
). Jeśli żadna z tych ścieżek nie zwróci elementu, zasada zwróci błąd. - Zasada sprawdzi, czy asercja jest taka sama jak podpisany element. element podrzędny elementu podpisanego. Jeśli tak nie jest, zasada powoduje zgłoszenie błędu.
- Jeśli
<NotBefore>
lub<NotOnOrAfter>
w asercji są obecne elementy, zasada sprawdzi bieżącą sygnaturę czasową te wartości są opisane w sekcji 2.5.1 SAML Core. - Te zasady będą miały zastosowanie do wszystkich dodatkowych reguł przetwarzania „Warunków” zgodnie z opisem w sekcji 2.5.1.1 SAML Core.
- Zasada sprawdzi podpis cyfrowy XML przy użyciu wartości
<TrustStore>
i<ValidateSigner>
, jak opisano powyżej. Jeśli weryfikacja się nie powiedzie, zasada zwróci błąd.
Po zakończeniu działania zasad bez zgłaszania błędu deweloper serwera proxy może mieć pewność, spośród następujących:
- Podpis cyfrowy na potwierdzeniu jest prawidłowy i został podpisany przez zaufany urząd certyfikacji
- Potwierdzenie jest prawidłowe dla bieżącego okresu
- Podmiot i wydawca asercji zostaną wyodrębnione i ustawione w zmiennych przepływu. Jest innych zasad za używanie tych wartości na potrzeby dodatkowego uwierzytelniania, takich jak sprawdzając poprawność nazwy podmiotu lub przekazując ją do systemu docelowego w celu weryfikacji.
Do analizowania nieprzetworzonego kodu XML asercji można używać innych zasad, takich jak ExtractZmienne do bardziej złożonej weryfikacji.
Zmienne przepływu
Potwierdzenie SAML może zawierać wiele informacji. SAML Sama asercja to kod XML, który może być przeanalizowany przy użyciu zasady Extractvariables i innych za pomocą bardziej złożonych mechanizmów weryfikacji.
Zmienna | Opis |
---|---|
saml.id |
Identyfikator asercji SAML |
saml.issuer |
W sekcji „Wystawca” asercji, skonwertowaną z natywnego typu XML na ciąg znaków |
saml.subject |
Pole „Subject” asercji, skonwertowaną z natywnego typu XML na ciąg znaków |
saml.valid |
Zwraca wartość prawda lub fałsz na podstawie wyniku sprawdzania poprawności |
saml.issueInstant |
IssueInstant |
saml.subjectFormat |
Format tematu |
saml.scmethod |
Metoda potwierdzenia obiektu |
saml.scdaddress |
Adres danych potwierdzenia podmiotu |
saml.scdinresponse |
Dane potwierdzenia podmiotu w odpowiedzi |
saml.scdrcpt |
Odbiorca danych potwierdzenia podmiotu |
saml.authnSnooa |
Parametr AuthnStatement SessionNotOnOrAfter |
saml.authnContextClassRef |
Odwołanie klasy kontekstu uwierzytelniania |
saml.authnInstant |
AuthnStatement AuthInstant |
saml.authnSessionIndex |
Indeks sesji AuthnStatement |
Informacje o błędzie
W tej sekcji opisano zwracane kody błędów i komunikaty o błędach i zmiennych błędów, które są ustawiane przez Edge, gdy ta zasada wywołuje 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 wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego tę zasadę.
Nazwa błędu | Przyczyna | Napraw |
---|---|---|
SourceNotConfigured |
Co najmniej jeden z następujących elementów metody Validate SAML Assertion
zasada nie jest zdefiniowana lub pusta: <Source> , <XPath> ,
<Namespaces> , <Namespace> .
|
build |
TrustStoreNotConfigured |
Jeśli element <TrustStore> jest pusty lub nie został określony w polu
Po sprawdzeniu zasady SAMLAssertion nie uda się wdrożyć serwera proxy interfejsu API.
Wymagany jest prawidłowy magazyn zaufania.
|
build |
NullKeyStoreAlias |
Jeśli element podrzędny <Alias> jest pusty lub nie został określony w elemencie <Keystore>
elementu zasad Generate SAML Assertion policy, a następnie wdrożenia interfejsu API.
serwer proxy nie działa. Wymagany jest prawidłowy alias magazynu kluczy.
|
build |
NullKeyStore |
Jeśli element podrzędny <Name> jest pusty lub nie został określony w elemencie <Keystore>
elementu zasady GenerateSAMLAssertion, a następnie wdrożenie interfejsu API
serwer proxy nie działa. Wymagana jest prawidłowa nazwa magazynu kluczy.
|
build |
NullIssuer |
Jeśli element <Issuer> jest pusty lub nie został określony w zasadzie Generate SAML (Wygeneruj SAML)
Zasada asercji, wtedy wdrożenie serwera proxy interfejsu API się nie uda. O
wymagana jest prawidłowa wartość <Issuer> .
|
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 . Nazwa błędu to ostatnia część kodu błędu. | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
W przypadku walidacji konfiguracji zasady asercji SAML prefiks błędu to
ValidateSAMLAssertion |
GenerateSAMLAssertion.failed = true |
Przykładowa odpowiedź na błąd
{ "fault": { "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type", "detail": { "errorcode": "steps.saml.generate.InvalidMediaTpe" } } }
Przykładowa reguła błędu
<FaultRules> <FaultRule name="invalid_saml_rule"> <Step> <Name>invalid-saml</Name> </Step> <Condition>(GenerateSAMLAssertion.failed = "true")</Condition> </FaultRule> </FaultRules>
Powiązane artykuły
Wyodrębnianie zmiennych: Wyodrębnianie zmiennych