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

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

SourceNotConfigured

Komunikat o błędzie

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten 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 nie powiedzie się z tym błędem, jeśli co najmniej jeden z tych elementów zasady Validate SAML Assertion nie jest zdefiniowany lub jest pusty: <Source>, <XPath>, <Namespaces>, <Namespace>.

Jeśli na przykład pominiesz element <XPath> lub pozostawisz element <Source> albo jego jednostki puste, wdrożenie serwera proxy interfejsu API się nie powiedzie.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Validate SAML Assertion (Weryfikuj asercję SAML) z komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady Validate SAML Assertion to Validate-SAML-Assertion-1.

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

    Na przykład te zasady mają 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, dlatego występuje błąd:

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

Rozdzielczość

Sprawdź, czy wartości elementu <Source> są prawidłowo skonfigurowane za pomocą elementu <Namespaces> i jego elementu podrzędnego <Namespace>. Musisz też zadbać o to, aby element <XPath> był zdefiniowany i nie był pusty.

Aby poprawić pokazane powyżej przykładowe zasady weryfikacji asercji SAML, możesz 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten 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 zasadzie ValidateSAMLAssertion, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagany jest prawidłowy sklep z zaufanymi aplikacjami.

Diagnostyka

  1. Sprawdź wszystkie zasady weryfikacji asercji SAML w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli w zasadach Validate SAML Assertion element <TrustStore> jest pusty lub nie został określony, to jest to przyczyna 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ść

Sprawdź, czy element <TrustStore> jest zawsze określony i nie jest pusty w zasadzie Weryfikacja potwierdzenia SAML. Nazwa <TrustStore> powinna być zgodna z nazwą prawidłowego magazynu TrustStore istniejącego we wszystkich środowiskach, w których próbujesz wdrożyć serwer proxy.

Aby poprawić powyższy przykład, możesz określić element <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 magazynu zaufanych certyfikatów znajdziesz w sekcji Magazyny zaufanych certyfikatów i magazyny kluczy.

NullKeyStore

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla się ten 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 elemencie <Keystore> zasad GenerateSAMLAssertion, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagana jest prawidłowa nazwa magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania asercji SAML w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada Generate SAML Assertion, w której element podrzędny <Name> jest pusty lub nie jest określony w elemencie <Keystore>, to jest to przyczyna błędu.

    Poniższa zasada Generate SAML Assertion (Generowanie asercji SAML) ma pusty element podrzędny <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 i nie jest pusty w elemencie <Keystore> zasad Generowanie potwierdzenia SAML.

Aby poprawić powyższy przykład, możesz prawidłowo określić element <Name>, a także zadbać o to, aby w elemencie <Alias> była podana 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 w artykule referencyjnym dotyczącym zasad SAMLAssertion.

NullKeyStoreAlias

Komunikat o błędzie

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten 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 elemencie <Keystore> zasady Generate SAML Assertion, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagany jest prawidłowy alias magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady Generate SAML Assertion w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada Generate SAML Assertion, w której element podrzędny <Alias> jest pusty lub nie jest określony w elemencie <Keystore>, to jest to przyczyna błędu.

    Ta zasada generowania asercji SAML ma pusty element podrzędny <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ść

Upewnij się, że element podrzędny <Name> jest zawsze określony i nie jest pusty w elemencie <Keystore> zasady Generowanie asercji SAML.

Aby poprawić powyższy przykład, możesz prawidłowo określić element <Alias>, a także upewnić się, że w elemencie <Name> podano prawidłową 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 w artykule referencyjnym dotyczącym zasad SAMLAssertion.

NullIssuer

Komunikat o błędzie

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu API zarządzania Edge kończy się niepowodzeniem i wyświetla ten 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 Assertion, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagana jest prawidłowa wartość <Issuer>.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania asercji SAML w konkretnym interfejsie API Proxy, w którym wystąpił błąd. Jeśli w zasadach Generate SAML Assertion element <Issuer> jest pusty lub nieokreślony, to jest to przyczyną błędu.

    W tych zasadach 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ść

Upewnij się, że element <Issuer> jest zawsze określony i nie jest pusty w zasadzie generowania asercji SAML.

Aby poprawić powyższy przykład, prawidłowo 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 w artykule referencyjnym dotyczącym zasad SAMLAssertion.