Устранение ошибок при развертывании политики утверждений SAML, Устранение ошибок при развертывании политики утверждений SAML

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Источникнотконфигуред

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Развертывание прокси-сервера API завершается с ошибкой, если один или несколько из следующих элементов политики проверки утверждений SAML не определены или пусты: <Source> , <XPath> , <Namespaces> , <Namespace> .

Например, если вы пропустите элемент <XPath> или оставите элемент <Source> или его объекты пустыми, развертывание прокси-сервера API завершится неудачно.

Диагностика

  1. Определите имя политики утверждения SAML, которая не удалась, из сообщения об ошибке. Например, в следующей ошибке имя политики проверки утверждения SAML — Validate-SAML-Assertion-1 .

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Изучите неудачный XML-код политики подтверждения SAML. Проверьте, отсутствует ли один или несколько из следующих элементов политики: <Source> , <XPath> , <Namespaces> , <Namespace> . Если да, то это может быть причиной ошибки.

    Например, следующая политика содержит пустой элемент <Namespaces> в элементе <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. В приведенном выше примере элемент <Namespaces> пуст, поэтому вы получаете ошибку:

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

Разрешение

Убедитесь, что значения элемента <Source> настроены правильно с помощью элемента <Namespaces> и его дочернего элемента <Namespace> . Вам также необходимо убедиться, что элемент <XPath> определен и не пуст.

Чтобы исправить пример политики проверки утверждений SAML, показанный выше, вы можете добавить элементы <Namespace> , а также <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

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Если элемент <TrustStore> пуст или не указан в политике ValidateSAMLAssertion, развертывание прокси-сервера API завершается неудачно. Требуется действующее хранилище доверенных сертификатов.

Диагностика

  1. Проверьте все политики проверки утверждений SAML в конкретном прокси-сервере API, где произошел сбой. Если существует какая-либо политика проверки утверждений SAML, в которой элемент <TrustStore> пуст или не указан, это и есть причина ошибки.

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

Разрешение

Убедитесь, что элемент <TrustStore> всегда указан и не пуст в политике проверки утверждений SAML. Имя <TrustStore> должно совпадать с именем допустимого TrustStore, существующего во всех средах, в которых вы пытаетесь развернуть прокси-сервер.

Чтобы исправить приведенный выше пример, вы можете указать элемент <TrustStore> с допустимым значением.

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

Дополнительную информацию о том, как использовать хранилище доверенных сертификатов, см. в разделе Хранилища доверенных сертификатов и Хранилища ключей .

NullKeyStore

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Если дочерний элемент <Name> пуст или не указан в элементе <Keystore> политики GenerateSAMLAssertion, развертывание прокси-сервера API завершается неудачей. Требуется допустимое имя хранилища ключей.

Диагностика

  1. Проверьте все политики создания утверждений SAML в конкретном прокси-сервере API, где произошел сбой. Если существует какая-либо политика создания утверждений SAML, в которой дочерний элемент <Name> пуст или не указан в элементе <Keystore> , это и есть причина ошибки.

    Следующая политика создания утверждений SAML имеет пустой дочерний элемент <Name> в элементе <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>
    

Разрешение

Убедитесь, что дочерний элемент <Name> всегда указан и не пуст в элементе <Keystore> политики создания утверждений SAML.

Чтобы исправить приведенный выше пример, вы можете правильно указать элемент <Name> , а также убедиться, что для элемента <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 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>

См. примеры из примеров кода в справочной статье по политике SAMLAssertion .

NullKeyStoreAlias

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Если дочерний элемент <Alias> пуст или не указан в элементе <Keystore> политики создания утверждений SAML, развертывание прокси-сервера API завершается неудачно. Требуется действительный псевдоним хранилища ключей.

Диагностика

  1. Проверьте все политики создания утверждений SAML в конкретном прокси-сервере API, где произошел сбой. Если существует какая-либо политика создания утверждений SAML, в которой дочерний элемент <Alias> пуст или не указан в элементе <Keystore> , то это и есть причина ошибки.

    Следующая политика создания утверждений SAML имеет пустой дочерний элемент <Alias> в элементе <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>
    

Разрешение

Убедитесь, что дочерний элемент <Name> всегда указан и не пуст в элементе <Keystore> политики создания утверждений SAML.

Чтобы исправить приведенный выше пример, вы можете правильно указать элемент <Alias> , а также убедиться, что для элемента <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>

См. примеры из примеров кода в справочной статье по политике SAMLAssertion .

NullIssuer

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Если элемент <Issuer> пуст или не указан в политике создания утверждений SAML, развертывание прокси-сервера API завершается неудачей. Требуется допустимое значение <Issuer> .

Диагностика

  1. Проверьте все политики создания утверждений SAML в конкретном прокси-сервере API, где произошел сбой. Если существует какая-либо политика создания утверждения SAML, в которой элемент <Issuer> пуст или не указан, это и есть причина ошибки.

    Следующая политика создания утверждений SAML содержит пустой элемент <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>
    

Разрешение

Убедитесь, что элемент <Issuer> всегда указан и не пуст в политике создания утверждений SAML.

Чтобы исправить приведенный выше пример, правильно укажите элемент <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>

См. примеры из примеров кода в справочной статье по политике SAMLAssertion .