Rozwiązywanie problemów z wdrażaniem zasady asercji SAML

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

SourceNotConfigured

Komunikat o błędzie

wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub zarządzania urządzeniami brzegowymi; Interfejs API ulega awarii i wyświetla się następujący komunikat o błędzie:

Error Deploying Revision revision_number to environment
ValidateSAMLAssertion[policy_name]: Source is not correctly configured.

Przykładowy komunikat o błędzie

Error Deploying Revision 2 to test
ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.

Przykładowy zrzut ekranu z błędem

Przyczyna

Wdrożenie serwera proxy interfejsu API kończy się tym błędem, jeśli co najmniej jedno z następujące elementy zasady Validate SAML Assertion nie są zdefiniowaną lub pustą wartość: <Source>, <XPath>, <Namespaces>, <Namespace>.

Jeśli na przykład pominiesz element <XPath> lub opuścisz <Source> lub jego encje są puste, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Zidentyfikuj nieudaną nazwę zasady weryfikacji SAML w . Na przykład w przypadku następującego błędu kodu Weryfikacja Nazwa zasady asercji SAML to Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Sprawdź niepoprawny kod XML zasady weryfikacji SAML. Sprawdź, czy: brakuje co najmniej jednego z tych elementów zasad lub jest on pusty: <Source>, <XPath>, <Namespaces>, <Namespace>. Jeśli tak, co może być przyczyną błędu.

    Na przykład ta zasada zawiera pusty element <Namespaces> w elemencie <Source>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ValidateSAMLAssertion name="SAML" ignoreContentType="false">
      <Source name="request">
        <Namespaces></Namespaces>
       </Source>
       <Description/>
     <TrustStore>ref://TrustStoreName</Truststore>
     <RemoveAssertion>false</RemoveAssertion>
    </ValidateSAMLAssertion>
    
  3. W powyższym przykładzie element <Namespaces> jest pusty, pojawia się błąd:

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    

Rozdzielczość

Sprawdź, czy wartości elementu <Source> są prawidłowo skonfigurowane z elementem <Namespaces> i jego elementem podrzędnym <Namespace>. Musisz też upewnić się, że element <XPath> jest zdefiniowany i nie jest pusty.

Aby poprawić przykładową zasadę weryfikacji SAML przedstawioną powyżej, może dodać elementy <Namespace> oraz <XPath>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>
    <XPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</XPath>
  </Source>
   <Description/>
<TrustStore>ref://TrustStoreName</Truststore>
<RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

TrustStoreNotConfigured

Komunikat o błędzie

wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub zarządzania urządzeniami brzegowymi; Interfejs API ulega awarii i wyświetla się następujący komunikat o błędzie:

Error Deploying Revision revision_number to environment
ValidateSAMLAssertion[[Ljava.lang.Object;@object]: Trust store is not correctly configured.

Przykładowy komunikat o błędzie

Error Deploying Revision 2 to test
ValidateSAMLAssertion[[Ljava.lang.Object;@39537262]: Trust store is not correctly configured.

Przykładowy zrzut ekranu z błędem

Przyczyna

Jeśli element <TrustStore> jest pusty lub nie został określony w polu Zweryfikuj zasadę SAMLAssertion, a następnie wdrożenie interfejsu API serwer proxy nie działa. Wymagany jest prawidłowy magazyn zaufania.

Diagnostyka

  1. Sprawdź wszystkie zasady Validate SAML Assertion w Serwer proxy interfejsu API, w którym wystąpił błąd. Jeśli jest dostępna weryfikacja Zasada asercji SAML, w której element <TrustStore> jest pusty lub nie został określony, to to jest przyczyną błędu.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <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>
        <XPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</XPath>
      </Source>
        <Description/>
        <TrustStore/>
      <RemoveAssertion>false</RemoveAssertion>
    </ValidateSAMLAssertion>
    

Rozdzielczość

Element <TrustStore> musi być zawsze określony oraz nie może być puste w zasadzie Validate SAML Assertion (Weryfikacja asercji SAML). <TrustStore> nazwa powinna być zgodna z nazwą prawidłowego TrustStore istniejąca we wszystkich środowiskach, w których próbujesz wdrożyć serwer proxy.

Aby poprawić ten przykład, możesz określić <TrustStore> z prawidłową wartością.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>
    <XPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</XPath>
  </Source>
  <TrustStore>TrustStoreName</TrustStore>
  <RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

Więcej informacji o korzystaniu z Truststore znajdziesz w informacjach o magazynach zaufania i magazynach kluczy.

NullKeyStore

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub Edge interfejs API zarządzania kończy się niepowodzeniem i wyświetla się następujący komunikat o błędzie:

Error Deploying Revision revision_number to environment
Assertion KeyStore name cannot be null.

Przykładowy komunikat o błędzie

Error Deploying Revision 4 to test
Assertion KeyStore name cannot be null.

Przykładowy zrzut ekranu z błędem

Przyczyna

Jeśli element podrzędny <Name> jest pusty lub nie został określony w parametrze <Keystore> zasady GenerateSAMLAssertion, a następnie nie uda się wdrożyć serwera proxy interfejsu API. Wymagana jest prawidłowa nazwa magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady Generate SAML Assertion (Generowanie asercji SAML) w konkretnym Serwer proxy interfejsu API, w którym wystąpił błąd. Jeśli na stronie jest Zasada asercji SAML, w której element podrzędny <Name> jest jest puste lub nie jest określony w elemencie <Keystore>, to jest przyczyny błędu.

    Poniższa zasada Generate SAML Assertion (Generowanie asercji SAML) ma pusty element podrzędny element <Name> w elemencie <Keystore>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GenerateSAMLAssertion name="SAML" ignoreContentType="false">`
      <CanonicalizationAlgorithm />
      <Issuer ref="reference">Issuer name</Issuer>
      <KeyStore>
        <Name></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>
    

Rozdzielczość

Upewnij się, że element podrzędny <Name> jest zawsze określony. niepuste w obrębie elementu <Keystore> metody Generate SAML Assertion .

Aby poprawić ten przykład, możesz poprawnie określić element <Name> oraz upewnij się, że dla elementu <Alias> została określona prawidłowa wartość.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>

Zapoznaj się z przykładami z przykładowego kodu w artykule referencyjnym zasad SAMLAssertion.

NullKeyStoreAlias

Komunikat o błędzie

wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub zarządzania urządzeniami brzegowymi; Interfejs API ulega awarii i wyświetla się następujący komunikat o błędzie:

Error Deploying Revision revision_number to environment
Assertion KeyStore alias cannot be null.

Przykładowy komunikat o błędzie

Error Deploying Revision 4 to test
Assertion KeyStore alias cannot be null.

Przykładowy zrzut ekranu z błędem

Przyczyna

Jeśli element podrzędny <Alias> jest pusty lub nie został określony w parametrze <Keystore> zasady Generate SAML Assertion policy, a następnie tag nie uda się wdrożyć serwera proxy interfejsu API. Wymagany jest prawidłowy alias magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady Generate SAML Assertion (Generowanie asercji SAML) w konkretnym Serwer proxy interfejsu API, w którym wystąpił błąd. Jeśli na stronie jest Zasada asercji SAML, w której element podrzędny <Alias> jest jest puste lub nie jest określony w elemencie <Keystore>, to jest przyczyny błędu.

    Poniższa zasada Generate SAML Assertion (Generowanie asercji SAML) ma pusty element podrzędny element <Alias> w elemencie <Keystore>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GenerateSAMLAssertion name="SAML" ignoreContentType="false">`
      <CanonicalizationAlgorithm />
      <Issuer ref="reference">Issuer name</Issuer>
      <KeyStore>
        <Name ref="reference">keystorename</Name>
        <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>
    

Rozdzielczość

Sprawdź, czy element podrzędny <Name> jest zawsze określony i nie jest pusty w elemencie <Keystore> zasady Generate SAML Assertion (Generowanie asercji SAML).

Aby poprawić przykład powyżej, możesz określić element <Alias> oraz upewnij się, że w funkcji <Name>.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>

Zapoznaj się z przykładami z przykładowego kodu w artykule referencyjnym zasad SAMLAssertion.

NullIssuer

Komunikat o błędzie

wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub zarządzania urządzeniami brzegowymi; Interfejs API ulega awarii i wyświetla się następujący komunikat o błędzie:

Error Deploying Revision revision_number to environment
Assertion Issuer cannot be null.

Przykładowy komunikat o błędzie

Error Deploying Revision 4 to test
Assertion Issuer cannot be null.

Przykładowy zrzut ekranu z błędem

Przyczyna

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. Prawidłowy Wartość <Issuer> jest wymagana.

Diagnostyka

  1. Sprawdzanie wszystkich zasad Generate SAML Assertion w konkretnym interfejsie API Serwer proxy, na którym wystąpił błąd. Jeśli jest używane okno Generate SAML (Wygeneruj SAML) Zasada asercji, w której element <Issuer> jest pusty lub nie to właśnie on jest przyczyną błędu.

    W poniższej zasadzie generowania asercji SAML element <Issuer> jest pusty:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GenerateSAMLAssertion name="SAML" ignoreContentType="false">`
      <CanonicalizationAlgorithm />
      <Issuer></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>
    

Rozdzielczość

Sprawdź, czy element <Issuer> jest zawsze określony i nie jest pusty w zasady Generate SAML Assertion (Generowanie asercji SAML).

Aby poprawić ten przykład, poprawnie określ element <Issuer>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>

Zapoznaj się z przykładami z przykładowego kodu w artykule referencyjnym zasad SAMLAssertion.