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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu użytkownika lub zarządzania Edge kończy się niepowodzeniem z powodu tego komunikatu 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 zakończy się niepowodzeniem z tego powodu, jeśli co najmniej 1 z tych elementów zasad weryfikacji oświadczenia SAML jest nie zdefiniowany lub pusty: <Source>, <XPath>, <Namespaces>, <Namespace>.

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

Diagnostyka

  1. Zidentyfikować nieprawidłową nazwę zasady weryfikacji SAML w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady Sprawdzanie potwierdzenia SAML to Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Sprawdź kod XML zasady Sprawdzanie oświadczenia SAML, która nie przeszła weryfikacji. Sprawdź, czy brakuje któregoś z tych elementów zasad lub czy któryś z nich jest pusty: <Source>, <XPath>, <Namespaces>, <Namespace>. Jeśli tak, to może to być przyczyną błędu.

    Na przykład w tych zasadach element <Namespaces> jest pusty 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 przykładzie powyżej element <Namespaces> jest pusty, więc pojawia się błąd:

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

Rozdzielczość

Upewnij się, że wartości elementu <Source> są prawidłowo skonfigurowane w odniesieniu do elementu <Namespaces> i jego elementu podrzędnego <Namespace>. Musisz też upewnić się, że element <XPath> jest zdefiniowany i nie jest pusty.

Aby poprawić przykład zasad weryfikacji oświadczenia SAML pokazanych powyżej, 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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu użytkownika lub zarządzania Edge kończy się niepowodzeniem z powodu tego komunikatu 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 jest określony w zasadzie ValidateSAMLAssertion, wdrożenie serwera proxy interfejsu API zakończy się niepowodzeniem. Wymagane jest prawidłowe zaufane repozytorium.

Diagnostyka

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

Upewnij się, że element <TrustStore> jest zawsze określony i niepusty w zasadach Weryfikuj potwierdzenie SAML. Nazwa <TrustStore> powinna być zgodna z nazwą prawidłowej puli zaufania, która istnieje we wszystkich środowiskach, w których próbujesz wdrożyć serwer proxy.

Aby poprawić ten przykład, możesz dodać 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 treści pliku Truststore znajdziesz w artykule Treści pliku Truststore i pliku Keystore.

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świetleniem tego komunikatu 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 jest określony w elemencie <Keystore> zasady GenerateSAMLAssertion, wdrożenie interfejsu API proxy kończy się niepowodzeniem. Wymagane jest prawidłowe nazwy Keystore.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania oświadczenia SAML w przypadku konkretnego serwera proxy API, w którym wystąpił błąd. Jeśli w zasadach generowania oświadczenia SAML występuje element podrzędny <Name>, który jest pusty lub nie jest określony w elemencie <Keystore>, jest to przyczyna błędu.

    W zasadzie generowania oświadczenia SAML element <Name> w elemencie <Keystore> jest pusty:

    <?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ść

Sprawdź, czy element podrzędny <Name> jest zawsze określony i nie może być pusty w elemencie <Keystore> zasady Generate SAML Assertion.

Aby poprawić powyższy przykład, możesz prawidłowo określić element <Name> oraz upewnić się, że element <Alias> ma 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 z przykładowego kodu w artykule referencyjnym zasad SAMLAssertion.

NullKeyStoreAlias

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu użytkownika lub zarządzania Edge kończy się niepowodzeniem z powodu tego komunikatu 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 jest określony w elemencie <Keystore> zasady Generuj oświadczenie SAML, wdrożenie serwera proxy interfejsu API się nie powiedzie. Wymagany jest prawidłowy alias magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania oświadczenia SAML w przypadku konkretnego serwera proxy 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 został określony w elemencie <Keystore>, to właśnie jest przyczyną błędu.

    W zasadzie „Generowanie oświadczenia SAML” element <Alias> w elemencie <Keystore> zawiera pusty element podrzędny <Alias>:

    <?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 może być pusty w elemencie <Keystore> zasady Generate SAML Assertion (Generowanie asercji SAML).

Aby poprawić powyższy przykład, możesz poprawnie określić element <Alias> oraz upewnić się, że element <Name> ma 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 z przykładowego kodu w artykule referencyjnym zasad SAMLAssertion.

NullIssuer

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu użytkownika lub zarządzania Edge kończy się niepowodzeniem z powodu tego komunikatu 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 jest określony w zasadach generowania oświadczenia SAML, wdrożenie serwera proxy interfejsu API zakończy się niepowodzeniem. Wymagane jest prawidłowe ustawienie parametru <Issuer>.

Diagnostyka

  1. Sprawdź wszystkie zasady Generate SAML Assertion (Generowanie asercji SAML) na konkretnym serwerze API interfejsu API, na którym wystąpił błąd. Jeśli w zasadach generowania oświadczenia SAML element <Issuer> jest pusty lub nie jest określony, jest to przyczyna błędu.

    Zasada Generowanie oświadczenia SAML zawiera pusty element <Issuer>:

    <?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 niepusty w zasadach generowania oświadczenia SAML.

Aby poprawić powyższy 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.