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

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

SourceNotConfigured

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świetlany jest 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.

Zrzut ekranu z przykładowym błędem

Przyczyna

Wdrożenie serwera proxy interfejsu API nie powiedzie się, jeśli co najmniej jeden z tych elementów zasady sprawdzania poprawności SAML nie jest zdefiniowany lub jest pusty: <Source>, <XPath>, <Namespaces>, <Namespace>.

Jeśli np. pominiesz element <XPath> lub pozostawisz element <Source> lub jego encje puste, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Zidentyfikuj nazwę zasady weryfikacji SAML, która nie powiodła się, w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady Validate assertion SAML to Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Sprawdź nieudaną weryfikację pliku XML zasad potwierdzenia SAML. Sprawdź, czy brakuje w niej co najmniej jednego z tych elementów zasady lub czy jest ona pusta: <Source>, <XPath>, <Namespaces>, <Namespace>. Jeśli tak, to może być ono przyczyną błędu.

    Na przykład w tej zasadzie w elemencie <Source> w ramach tej zasady jest pusty element <Namespaces>:

    <?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 tym przykładzie element <Namespaces> jest pusty, dlatego 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 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ę sprawdzania poprawności SAML podaną 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 Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest 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.

Zrzut ekranu z przykładowym błędem

Przyczyna

Jeśli element <TrustStore> jest pusty lub nie określono go w zasadzie weryfikacji SAMLAssertion, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagany jest prawidłowy magazyn zaufania.

Diagnostyka

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

Sprawdź, czy element <TrustStore> jest zawsze określony i nie jest pusty w zasadach sprawdzania poprawności SAML. Nazwa <TrustStore> powinna być taka sama jak nazwa prawidłowego obiektu 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 Truststore znajdziesz w artykule na temat magazynów zaufania i magazynów 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.

Zrzut ekranu z przykładowym błędem

Przyczyna

Jeśli element podrzędny <Name> jest pusty lub nie został określony w elemencie <Keystore> w zasadzie GenerateSAMLAssertion, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagana jest prawidłowa nazwa magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania potwierdzenia SAML na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada Wygeneruj zasadę potwierdzenia SAML, w której element podrzędny <Name> jest pusty lub nieokreślony w elemencie <Keystore>, to jest przyczyną błędu.

    Poniższa zasada Wygeneruj potwierdzenie 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ść

Sprawdź, czy element podrzędny <Name> jest zawsze określony i nie jest pusty w elemencie <Keystore> zasady Wygeneruj potwierdzenie SAML.

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

NullKeyStoreAlias

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świetlany jest 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.

Zrzut ekranu z przykładowym błędem

Przyczyna

Jeśli element podrzędny <Alias> jest pusty lub nie określono go w elemencie <Keystore> zasady Wygeneruj potwierdzenie SAML, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagany jest prawidłowy alias magazynu kluczy.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania potwierdzenia SAML na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada Wygeneruj zasadę potwierdzenia SAML, w której element podrzędny <Alias> jest pusty lub nieokreślony w elemencie <Keystore>, to jest przyczyną błędu.

    Poniższa zasada Wygeneruj potwierdzenie 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ść

Sprawdź, czy element podrzędny <Name> jest zawsze określony i niepusty w elemencie <Keystore> w zasadzie generowania potwierdzenia SAML.

Aby poprawić powyższy przykład, możesz prawidłowo 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 kodu w artykule z informacjami o zasadach SAMLAssertion.

NullIssuer

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świetlany jest 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.

Zrzut ekranu z przykładowym błędem

Przyczyna

Jeśli element <Issuer> jest pusty lub nie określono go w zasadzie Wygeneruj SAML, wdrożenie serwera proxy interfejsu API nie powiedzie się. Wymagana jest prawidłowa wartość parametru <Issuer>.

Diagnostyka

  1. Sprawdź wszystkie zasady generowania potwierdzenia SAML na określonym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada Wygeneruj zasadę potwierdzania SAML, w której element <Issuer> jest pusty lub nieokreślony, to jest przyczyną błędu.

    Następująca zasada generowania potwierdzenia SAML ma 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ść

Zadbaj o to, aby element <Issuer> był zawsze określony i niepusty w zasadzie Wygeneruj potwierdzenie SAML.

Aby poprawić treść przykładową powyżej, 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 kodu w artykule z informacjami o zasadach SAMLAssertion.