Solução de problemas de erro na implantação da política de declaração de SAML

Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.

SourceNotConfigured

Mensagem de erro

A implantação do proxy da API pela IU da Apigee ou pela API Apigee falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Erro ao implantar a revisão 2 para teste.

Causa

A implantação do proxy de API falhará com este erro se um ou mais dos seguintes elementos da política ValidateSAMLAssertion não estiver definido ou estiver vazio: <Source>, <XPath>, <Namespaces>, <Namespace>.

Por exemplo, se você perder o elemento <XPath> ou deixar o elemento <Source> ou suas entidades vazias, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique o nome da política ValidateSAMLAssertion com falha na mensagem de erro. Por exemplo, no erro a seguir, o nome da política ValidateSAMLAssertion é Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Examine o XML da política ValidateSAMLAssertion com falha. Verifique se um ou mais dos seguintes elementos da política estão ausentes ou vazios: <Source>, <XPath>, <Namespaces>, <Namespace>. Se for o caso, isso pode ser a causa do erro.

    Por exemplo, a política a seguir tem um elemento <Namespaces> vazio no 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. No exemplo acima, o elemento <Namespaces> está vazio. Portanto, você receberá o erro:

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

Resolução

Verifique se os valores do elemento <Source> estão configurados corretamente com o elemento <Namespaces> e o elemento filho <Namespace>. Além disso, verifique se o elemento <XPath> está definido e não vazio.

Para corrigir o exemplo de política ValidateSAMLAssertion mostrado acima, é possível adicionar os elementos <Namespace> e também <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

Mensagem de erro

A implantação do proxy da API pela IU da Apigee ou pela API Apigee falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Erro ao implantar a revisão 2 para teste.

Causa

Se o elemento <TrustStore> estiver vazio ou não for especificado na política ValidateSAMLAssertion, a implantação do proxy da API falhará. Uma Trust Store válida é obrigatória.

Diagnóstico

  1. Analise todas as políticas de validação de declaração SAML no proxy de API específico em que a falha ocorreu. Se houver uma política de validação de declaração SAML em que o elemento <TrustStore> esteja vazio ou não especificado, essa será a causa do erro.

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

Resolução

Garanta que o elemento <TrustStore> seja sempre especificado e não esteja vazio na política SAMLAssertion. O nome <TrustStore> precisa corresponder ao nome de um TrustStore válido em todos os ambientes em que você está tentando implantar um proxy.

Para corrigir o exemplo acima, especifique o elemento <TrustStore> com um 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

Mensagem de erro

A implantação do proxy de API através da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Erro ao implantar a revisão 4 para teste.

Causa

Se o elemento filho <Name> estiver vazio ou não especificado no elemento <Keystore> da política GenerateSAMLAssertion, a implantação do proxy de API falhará. Um nome válido de keystore é obrigatório.

Diagnóstico

  1. Analise todas as políticas GenerateSAMLAssertion no proxy de API específico em que ocorreu a falha. Se houver qualquer política GenerateSAMLAssertion em que o elemento filho <Name> esteja vazio ou não especificado no elemento <Keystore>, essa é a causa do erro.

    A política GenerateSAMLAssertion a seguir tem um elemento filho <Name> vazio no 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>
    

Resolução

Certifique-se de que o elemento filho <Name> seja sempre especificado e não esteja vazio no elemento <Keystore> da política GenerateSAMLAssertion.

Para corrigir o exemplo acima, especifique o elemento <Name> corretamente e verifique se um valor válido foi especificado para o 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>

Consulte os exemplos da política SAMLAssertion.

NullKeyStoreAlias

Mensagem de erro

A implantação do proxy da API pela IU da Apigee ou pela API Apigee falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Erro ao implantar a revisão 4 para teste.

Causa

Se o elemento filho <Alias> estiver vazio ou não especificado no elemento <Keystore> da política GenerateSAMLAssertion, a implantação do proxy de API falhará. Um alias de keystore válido é obrigatório.

Diagnóstico

  1. Analise todas as políticas GenerateSAMLAssertion no proxy de API específico em que ocorreu a falha. Se houver qualquer política GenerateSAMLAssertion em que o elemento filho <Alias> esteja vazio ou não especificado no elemento <Keystore>, essa é a causa do erro.

    O GenerateSAMLAssertion a seguir tem um elemento filho <Alias> vazio no 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>
    

Resolução

Certifique-se de que o elemento filho <Name> seja sempre especificado e não esteja vazio no elemento <Keystore> da política GenerateSAMLAssertion.

Para corrigir o exemplo acima, especifique o elemento <Alias> corretamente e verifique se um valor válido foi especificado para o 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>

Consulte os exemplos da política SAMLAssertion.

NullIssuer

Mensagem de erro

A implantação do proxy da API pela IU da Apigee ou pela API Apigee falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Erro ao implantar a revisão 4 para teste.

Causa

Se o elemento <Issuer> estiver vazio ou não for especificado na política GenerateSAMLAssertion, a implantação do proxy de API falhará. Um valor de <Issuer> válido é necessário.

Diagnóstico

  1. Analise todas as políticas GenerateSAMLAssertion no proxy de API específico em que ocorreu a falha. Se houver qualquer política GenerateSAMLAssertion em que o elemento <Issuer> esteja vazio ou não especificado, essa é a causa do erro.

    A seguinte política GenerateSAMLAssertion tem um elemento <Issuer> vazio:

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

Resolução

Certifique-se de que o elemento <Issuer> seja sempre especificado e não esteja vazio na política GenerateSAMLAssertion.

Para corrigir o exemplo acima, especifique o elemento <Issuer> corretamente:

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

Consulte os exemplos da política SAMLAssertion.