Solucionar problemas de errores de implementación de políticas de aserción SAML

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

SourceNotConfigured

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario de Apigee o de la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Error al implementar la revisión 2 en la prueba.

Causa

La implementación del proxy de API falla con este error si no se define o está vacío uno o varios de los siguientes elementos de la política ValidateSAMLAssertion: <Source>, <XPath>, <Namespaces> y <Namespace>.

Por ejemplo, si falta el elemento <XPath> o el elemento <Source> o sus entidades están vacíos, se producirá un error en la implementación del proxy de la API.

Diagnóstico

  1. Identifica el nombre de la política ValidateSAMLAssertion que ha fallado en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política ValidateSAMLAssertion es Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Examina el archivo XML de la política ValidateSAMLAssertion que ha fallado. Comprueba si falta o está vacío alguno de los siguientes elementos de la política: <Source>, <XPath>, <Namespaces> y <Namespace>. Si es así, podría ser la causa del error.

    Por ejemplo, la siguiente política tiene un elemento <Namespaces> vacío en el elemento <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. En el ejemplo anterior, el elemento <Namespaces> está vacío, por lo que se produce el siguiente error:

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

Resolución

Asegúrate de que los valores del elemento <Source> estén configurados correctamente con el elemento <Namespaces> y su elemento secundario <Namespace>. También debe asegurarse de que el elemento <XPath> esté definido y no esté vacío.

Para corregir la política de ejemplo ValidateSAMLAssertion que se muestra arriba, puede añadir los elementos <Namespace> y <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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario de Apigee o de la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Error al implementar la revisión 2 en la prueba.

Causa

Si el elemento <TrustStore> está vacío o no se especifica en la política ValidateSAMLAssertion, se producirá un error al implementar el proxy de API. Es obligatorio indicar un almacén de confianza válido.

Diagnóstico

  1. Examina todas las políticas de Validate SAML Assertion del proxy de API específico en el que se ha producido el error. Si hay alguna política Validate SAML Assertion en la que el elemento <TrustStore> esté vacío o no se haya especificado, ese será el motivo del error.

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

Resolución

Asegúrese de que el elemento <TrustStore> siempre se especifique y no esté vacío en la política SAMLAssertion. El nombre <TrustStore> debe coincidir con el de un TrustStore válido que exista en todos los entornos en los que intentes implementar un proxy.

Para corregir el ejemplo anterior, puede especificar el elemento <TrustStore> con un valor válido.

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario de Apigee o de la API falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Error al implementar la revisión 4 en la prueba.

Causa

Si el elemento secundario <Name> está vacío o no se especifica en el elemento <Keystore> de la política GenerateSAMLAssertion, se producirá un error en la implementación del proxy de API. Es obligatorio indicar un nombre de almacén de claves válido.

Diagnóstico

  1. Examina todas las políticas de GenerateSAMLAssertion en el proxy de API específico en el que se ha producido el fallo. Si hay alguna política GenerateSAMLAssertion en la que el elemento secundario <Name> esté vacío o no se haya especificado en el elemento <Keystore>, ese será el motivo del error.

    La siguiente política GenerateSAMLAssertion tiene un elemento secundario <Name> vacío en el elemento <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>
    

Resolución

Asegúrate de que el elemento secundario <Name> siempre se especifique y no esté vacío en el elemento <Keystore> de la política GenerateSAMLAssertion.

Para corregir el ejemplo anterior, puede especificar el elemento <Name> correctamente y asegurarse de que se ha especificado un valor válido para el elemento <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>

Consulta los ejemplos de la política SAMLAssertion.

NullKeyStoreAlias

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario de Apigee o de la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Error al implementar la revisión 4 en la prueba.

Causa

Si el elemento secundario <Alias> está vacío o no se especifica en el elemento <Keystore> de la política GenerateSAMLAssertion, se producirá un error en la implementación del proxy de API. Es obligatorio indicar un alias de almacén de claves válido.

Diagnóstico

  1. Examina todas las políticas de GenerateSAMLAssertion en el proxy de API específico en el que se ha producido el fallo. Si hay alguna política GenerateSAMLAssertion en la que el elemento secundario <Alias> esté vacío o no se haya especificado en el elemento <Keystore>, ese será el motivo del error.

    El siguiente elemento GenerateSAMLAssertion tiene un elemento secundario <Alias> vacío en el elemento <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>
    

Resolución

Asegúrate de que el elemento secundario <Name> siempre se especifique y no esté vacío en el elemento <Keystore> de la política GenerateSAMLAssertion.

Para corregir el ejemplo anterior, puede especificar el elemento <Alias> correctamente y asegurarse de que se ha especificado un valor válido para el elemento <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>

Consulta los ejemplos de la política SAMLAssertion.

NullIssuer

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario de Apigee o de la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Error al implementar la revisión 4 en la prueba.

Causa

Si el elemento <Issuer> está vacío o no se especifica en la política GenerateSAMLAssertion, se produce un error en la implementación del proxy de API. Se requiere un valor de <Issuer> válido.

Diagnóstico

  1. Examina todas las políticas GenerateSAMLAssertion de la API Proxy específica en la que se ha producido el error. Si hay alguna política GenerateSAMLAssertion en la que el elemento <Issuer> esté vacío o no se haya especificado, ese será el motivo del error.

    La siguiente política GenerateSAMLAssertion tiene un elemento <Issuer> vacío:

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

Resolución

Asegúrate de que el elemento <Issuer> siempre se especifique y no esté vacío en la política GenerateSAMLAssertion.

Para corregir el ejemplo anterior, especifica el elemento <Issuer> correctamente:

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

Consulta los ejemplos de la política SAMLAssertion.