Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Co
- Uwierzytelnianie i autoryzacja przychodzącego: sprawdzanie zasady asercji SAML
Typ zasady SAML pozwala serwerom proxy interfejsu API sprawdzać potwierdzenia SAML dołączone do przychodzących żądań SOAP. Zasada SAML weryfikuje wiadomości przychodzące zawierające cyfrowo podpisane potwierdzenie SAML, odrzuca je, jeśli są nieprawidłowe, i ustawia zmienne zezwalające na dodatkowe zasady lub same usługi backendu w celu dalszej weryfikacji informacji zawartych w asercji. - Wychodzące tokeny generowania tokenów – generowanie zasad potwierdzania SAML
Typ zasady SAML pozwala serwerom proxy interfejsu API dołączać potwierdzenia SAML do wychodzących żądań XML. Te asercje są wtedy dostępne, aby umożliwić usługom backendu zastosowanie dodatkowego przetwarzania zabezpieczeń podczas uwierzytelniania i autoryzacji.
Sample
Generowanie potwierdzenia 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
Weryfikowanie potwierdzenia 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 potwierdzenia SAML
Odwołanie do elementu
Generowanie potwierdzenia SAML
Nazwa pola | Opis | ||
---|---|---|---|
name atrybut |
Nazwa instancji zasady. Nazwa musi być unikalna w organizacji. Znaki, których możesz używać w nazwie, są ograniczone do: A-Z0-9._\-$
% . Interfejs zarządzania wymusza jednak dodatkowe ograniczenia, takie jak automatyczne usuwanie znaków niealfanumerycznych. |
||
ignoreContentType atrybut |
Wartość logiczna, która może mieć wartość true lub false . Domyślnie asercja nie będzie generowana, jeśli typ treści wiadomości nie jest typu XML Content-Type. Jeśli ustawiono wartość true , wiadomość będzie traktowana jako XML bez względu na typ treści. |
||
Issuer |
Unikalny identyfikator dostawcy tożsamości. Jeśli występuje opcjonalny atrybut
ref , wartość wystawcy zostanie przypisana w czasie działania na podstawie określonej zmiennej. Jeśli opcjonalny atrybut ref nie jest obecny, używana jest wartość Issuer.
|
||
KeyStore |
Nazwa magazynu kluczy, który zawiera klucz prywatny i alias klucza prywatnego używanego 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 dołączeniu do przepływu żądania zasada message przekierowuje żądanie na żądanie, a po dołączeniu do przepływu odpowiedzi przekazuje zasadę message jako odpowiedź. |
||
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 występuje opcjonalny atrybut
ref , wartość Subject jest przypisywana w czasie działania na podstawie określonej zmiennej. Jeśli opcjonalny atrybut ref występuje, zostanie użyta wartość Subject.
|
||
Template |
Jeśli występuje, asercja zostanie wygenerowana, gdy uruchomisz ten szablon, zastępując wszystkie znaki
{} odpowiednią zmienną, a następnie podpiszesz wynik cyfrowo. Szablon jest przetwarzany zgodnie z regułami zasady AssignMessage.
Zobacz Przypisywanie zasad dotyczących wiadomości.
|
Weryfikowanie potwierdzenia SAML
Nazwa pola | Opis |
---|---|
name atrybut |
Nazwa instancji zasady. Nazwa musi być unikalna w organizacji.
Znaki, których możesz używać w nazwie, są ograniczone do:
A-Z0-9._\-$ % .
Interfejs zarządzania wymusza jednak dodatkowe ograniczenia, takie jak automatyczne usuwanie znaków niealfanumerycznych.
|
ignoreContentType atrybut |
Wartość logiczna, która może mieć wartość true lub false . Domyślnie asercja nie będzie generowana, jeśli typ treści wiadomości nie jest typu XML Content-Type. Jeśli ustawiono wartość true , wiadomość będzie traktowana jako XML bez względu na typ 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 dołączeniu do przepływu żądania zasada message przekierowuje żądanie na żądanie, a po dołączeniu do przepływu odpowiedzi przekazuje zasadę message jako odpowiedź. |
XPath |
Wycofano. Element podrzędny elementu
Source . Należy użyć właściwości AssertionXPath i SignedElementXPath .
|
AssertionXPath |
Element podrzędny elementu
Source . Wyrażenie XPath, które wskazuje element w przychodzącym dokumencie XML, z którego zasada może wyodrębnić potwierdzenie SAML.
|
SignedElementXPath |
Element podrzędny elementu
Source . Wyrażenie XPath, które wskazuje element w przychodzącym dokumencie XML, z którego zasada może wyodrębnić podpisany element. Może się ona różnić lub być taka sama jak ścieżka XPath dla obiektu AssertionXPath .
|
TrustStore |
Nazwa TrustStore zawierającej zaufane certyfikaty X.509 używane do weryfikowania podpisów cyfrowych w potwierdzeniach SAML.
|
RemoveAssertion |
Wartość logiczna, która może mieć wartość
true lub false . Gdy true , potwierdzenie SAML zostanie usunięte z wiadomości żądania, zanim zostanie ona przekazana do usługi backendu.
|
Zastosowanie
Specyfikacja SAML (Security Assertion Markup Language) definiuje formaty i protokoły umożliwiające aplikacjom wymianę informacji w formacie XML na potrzeby uwierzytelniania i autoryzacji.
„Asercja zabezpieczeń” to zaufany token opisujący atrybut aplikacji, użytkownika aplikacji lub innego uczestnika transakcji. Potwierdzenia zabezpieczeń są zarządzane i wykorzystywane przez 2 typy encji:
- Dostawcy tożsamości: generowanie potwierdzeń zabezpieczeń w imieniu uczestników
- Dostawcy usług: weryfikowanie twierdzeń zabezpieczeń przez zaufane relacje z dostawcami tożsamości
Platforma interfejsów API może działać jako dostawca tożsamości i dostawca usług. Działa jako dostawca tożsamości, generując asercje i dołączając je do żądań wiadomości, dzięki czemu usługi backendu mogą je przetwarzać. Działa jako dostawca usług przez weryfikowanie asercji w wiadomościach przychodzących żądań.
Typ zasady SAML obsługuje potwierdzenia SAML zgodne z wersją 2.0 specyfikacji SAML Core i wersją 1.0 specyfikacji profilu tokena SAML WS-Security.
Generowanie potwierdzenia SAML
Przetwarzanie zasad:
- Jeśli komunikat nie jest w formacie XML, a parametr IgnorujContentType nie ma wartości
true
, zgłoś błąd. - Jeśli ustawiona jest wartość „Template”, przetwórz szablon zgodnie z opisem w przypadku zasady AssignMessage. Jeśli brakuje jakichkolwiek zmiennych, a zmienna IgnorujUnresolvedVariables nie jest ustawiona, zgłoś błąd.
- Jeśli szablon „Template” nie jest ustawiony, utwórz asercję obejmującą wartości parametrów Subject i Issuer lub ich odwołania.
- Podpisz asercję za pomocą podanego klucza.
- Dodaj potwierdzenie do wiadomości w podanej ścieżce XPath.
Weryfikowanie potwierdzenia SAML
Przetwarzanie zasad:
- Zasada sprawdza wiadomość przychodzącą, aby potwierdzić, że typ nośnika żądania to XML. W tym celu sprawdza, czy typ treści jest zgodny z formatem
text/(.*+)?xml
lubapplication/(.*+)?xml
. Jeśli typ nośnika jest inny niż XML, a zasada<IgnoreContentType>
nie jest ustawiona, zasada zgłasza błąd. - Zasada przeanalizuje plik XML. Jeśli analiza nie powiedzie się, spowoduje to błąd.
- Zasada wyodrębni podpisany element i asercję przy użyciu odpowiednich określonych ścieżek XPath (
<SignedElementXPath>
i<AssertionXPath>
). Jeśli żadna z tych ścieżek nie zwróci elementu, zasada zgłosi błąd. - Zasada sprawdzi, czy asertion jest taki sam jak podpisany element lub jest elementem podrzędnym tego elementu. Jeśli ten warunek nie zostanie spełniony, zasady powodują błąd.
- Jeśli asercja zawiera jeden z elementów
<NotBefore>
lub<NotOnOrAfter>
, zasada sprawdza bieżącą sygnaturę czasową z tymi wartościami, jak opisano w sekcji dotyczącej podstawowego SAML 2.5.1. - W ramach zasad będą stosowane wszelkie dodatkowe reguły przetwarzania „Warunków” opisane w sekcji 2.5.1.1 dotyczącej SAML.
- Ta zasada weryfikuje podpis cyfrowy XML przy użyciu wartości
<TrustStore>
i<ValidateSigner>
, jak opisano powyżej. Jeśli weryfikacja się nie powiedzie, zasada zgłosi błąd.
Gdy zasada zostanie skonfigurowana bez występowania błędu, deweloper serwera proxy ma pewność, że:
- Podpis cyfrowy potwierdzenia jest prawidłowy i został podpisany przez zaufany urząd certyfikacji
- Asercja jest prawidłowa w bieżącym okresie
- Podmiot i wystawca potwierdzenia zostanie wyodrębniony i ustawiony w zmiennych procesu. Obowiązkiem innych zasad jest użycie tych wartości do dodatkowego uwierzytelniania, np. sprawdzenie, czy nazwa podmiotu jest poprawna, lub przekazanie jej do docelowego systemu w celu weryfikacji.
Inne zasady, takie jak ExtractZmienne, mogą być używane do analizowania nieprzetworzonego kodu XML potwierdzenia w celu bardziej złożonej weryfikacji.
Zmienne przepływu
Potwierdzenie SAML może zawierać wiele informacji. Samo potwierdzenie SAML to kod XML, który można analizować za pomocą zasady ExtractVariables i innych mechanizmów w celu zaimplementowania bardziej złożonych weryfikacji.
Zmienna | Opis |
---|---|
saml.id |
Identyfikator potwierdzenia SAML |
saml.issuer |
„Wystawca” potwierdzenia, przekonwertowany z natywnego typu XML na ciąg znaków |
saml.subject |
„Temat” potwierdzenia, przekonwertowany z natywnego typu XML na ciąg znaków |
saml.valid |
Zwraca wartość prawda lub fałsz na podstawie wyniku kontroli poprawności |
saml.issueInstant |
IssueInstant |
saml.subjectFormat |
Format tematu |
saml.scmethod |
Metoda potwierdzenia tematu |
saml.scdaddress |
Adres danych potwierdzenia podmiotu |
saml.scdinresponse |
Dane potwierdzenia podmiotu w odpowiedzi |
saml.scdrcpt |
Odbiorca danych potwierdzenia tematu |
saml.authnSnooa |
Sesja oświadczenia uwierzytelniania niewłączona lubPo |
saml.authnContextClassRef |
Odwołanie klasy AuthnStatement AuthnStatement |
saml.authnInstant |
AuthnStatement AuthInstant |
saml.authnSessionIndex |
Indeks sesji AuthnStatement |
Informacje o błędach
W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, a także zmienne błędów ustawiane przez Edge, gdy ta zasada aktywuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi takich 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 wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
Nazwa błędu | Przyczyna | Napraw |
---|---|---|
SourceNotConfigured |
Co najmniej jeden z tych elementów zasady sprawdzania poprawności SAML nie jest zdefiniowany lub jest pusty: <Source> , <XPath> , <Namespaces> , <Namespace> .
|
build |
TrustStoreNotConfigured |
Jeśli element <TrustStore> jest pusty lub nie został określony w zasadzie Validate SAMLAssertion, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Wymagany jest prawidłowy magazyn zaufania.
|
build |
NullKeyStoreAlias |
Jeśli element podrzędny <Alias> jest pusty lub nie został określony w elemencie <Keystore> zasady Wygeneruj potwierdzenie SAML, wdrożenie serwera proxy interfejsu API nie powiedzie się. 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> w zasadzie Wygeneruj SAMLAssertion, wdrożenie serwera proxy interfejsu API się nie uda. Wymagana jest prawidłowa nazwa magazynu kluczy.
|
build |
NullIssuer |
Jeśli element <Issuer> jest pusty lub nie został określony w zasadzie generowania potwierdzenia SAML, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagana jest prawidłowa wartość atrybutu <Issuer> .
|
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. Nazwa błędu to ostatnia część kodu. | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
W przypadku weryfikacji konfiguracji zasady potwierdzenia 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: zasady wyodrębniania zmiennych