Risoluzione dei problemi di errore di deployment dei criteri di asserzione SAML

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

SourceNotConfigured

Messaggio di errore

Il deployment del proxy API tramite la UI Apigee o l'API Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Errore durante il deployment della revisione 2 per il test.

Causa

Il deployment del proxy API non va a buon fine e viene visualizzato questo errore se uno o più dei seguenti elementi del criterio ValidateSAMLAssertion non sono definiti o sono vuoti: <Source>, <XPath>, <Namespaces>, <Namespace>.

Ad esempio, se non inserisci l'elemento <XPath> o lasci vuoto l'elemento <Source> o le relative entità, il deployment del proxy API non va a buon fine.

Diagnosi

  1. Identifica il nome del criterio ValidateSAMLAssertion non riuscito dal messaggio di errore. Ad esempio, nel seguente errore il nome della policy ValidateSAMLAssertion è Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Esamina il file XML delle norme ValidateSAMLAssertion non riuscito. Controlla se uno o più dei seguenti elementi della policy sono mancanti o vuoti: <Source>, <XPath>, <Namespaces>, <Namespace>. In tal caso, questo potrebbe essere la causa dell'errore.

    Ad esempio, la seguente policy ha un elemento <Namespaces> vuoto nell'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. Nell'esempio precedente, l'elemento <Namespaces> è vuoto, pertanto viene visualizzato l'errore:

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

Risoluzione

Assicurati che i valori dell'elemento <Source> siano configurati correttamente con l'elemento <Namespaces> e il relativo elemento secondario <Namespace>. Devi anche assicurarti che l'elemento <XPath> sia definito e non vuoto.

Per correggere la policy ValidateSAMLAssertion di esempio mostrata sopra, puoi aggiungere gli elementi <Namespace> e <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

Messaggio di errore

Il deployment del proxy API tramite la UI Apigee o l'API Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Errore durante il deployment della revisione 2 per il test.

Causa

Se l'elemento <TrustStore> è vuoto o non specificato nel criterio ValidateSAMLAssertion, il deployment del proxy API non va a buon fine. È necessario un Trust Store valido.

Diagnosi

  1. Esamina tutte le norme di convalida dell'asserzione SAML nel proxy API specifico in cui si è verificato l'errore. Se esiste una norma Validate SAML Assertion in cui l'elemento <TrustStore> è vuoto o non specificato, questo è il motivo dell'errore.

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

Risoluzione

Assicurati che l'elemento <TrustStore> sia sempre specificato e non vuoto all'interno del criterio SAMLAssertion. Il nome <TrustStore> deve corrispondere al nome di un TrustStore valido che esiste in tutti gli ambienti in cui tenti di eseguire il deployment di un proxy.

Per correggere l'esempio precedente, puoi specificare l'elemento <TrustStore> con un valore valido.

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

Messaggio di errore

Il deployment del proxy API tramite la UI Apigee o l'API non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Errore durante il deployment della revisione 4 per il test.

Causa

Se l'elemento secondario <Name> è vuoto o non specificato nell'elemento <Keystore> del criterio GenerateSAMLAssertion, il deployment del proxy API non va a buon fine. È necessario un nome dell'archivio chiavi valido.

Diagnosi

  1. Esamina tutte le norme GenerateSAMLAssertion nel proxy API specifico in cui si è verificato l'errore. Se è presente un criterio GenerateSAMLAssertion in cui l'elemento secondario <Name> è vuoto o non specificato nell'elemento <Keystore>, questo è il motivo dell'errore.

    La seguente policy GenerateSAMLAssertion ha un elemento secondario <Name> vuoto nell'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>
    

Risoluzione

Assicurati che l'elemento secondario <Name> sia sempre specificato e non vuoto all'interno dell'elemento <Keystore> del criterio GenerateSAMLAssertion.

Per correggere l'esempio precedente, puoi specificare correttamente l'elemento <Name> e assicurarti che venga specificato un valore valido per l'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>

Fai riferimento agli esempi delle norme SAMLAssertion.

NullKeyStoreAlias

Messaggio di errore

Il deployment del proxy API tramite la UI Apigee o l'API Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Errore durante il deployment della revisione 4 per il test.

Causa

Se l'elemento secondario <Alias> è vuoto o non specificato nell'elemento <Keystore> del criterio GenerateSAMLAssertion, il deployment del proxy API non va a buon fine. È necessario un alias keystore valido.

Diagnosi

  1. Esamina tutte le norme GenerateSAMLAssertion nel proxy API specifico in cui si è verificato l'errore. Se è presente un criterio GenerateSAMLAssertion in cui l'elemento secondario <Alias> è vuoto o non specificato nell'elemento <Keystore>, questo è il motivo dell'errore.

    Il seguente GenerateSAMLAssertion ha un elemento secondario <Alias> vuoto nell'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>
    

Risoluzione

Assicurati che l'elemento secondario <Name> sia sempre specificato e non vuoto all'interno dell'elemento <Keystore> del criterio GenerateSAMLAssertion.

Per correggere l'esempio precedente, puoi specificare correttamente l'elemento <Alias> e assicurarti che venga specificato un valore valido per l'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>

Fai riferimento agli esempi delle norme SAMLAssertion.

NullIssuer

Messaggio di errore

Il deployment del proxy API tramite la UI Apigee o l'API Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Errore durante il deployment della revisione 4 per il test.

Causa

Se l'elemento <Issuer> è vuoto o non specificato nel criterio GenerateSAMLAssertion, il deployment del proxy API non va a buon fine. È necessario un valore <Issuer> valido.

Diagnosi

  1. Esamina tutte le norme GenerateSAMLAssertion nel proxy API specifico in cui si è verificato l'errore. Se è presente un criterio GenerateSAMLAssertion in cui l'elemento <Issuer> è vuoto o non specificato, questo è il motivo dell'errore.

    I seguenti criteri GenerateSAMLAssertion hanno un elemento <Issuer> vuoto:

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

Risoluzione

Assicurati che l'elemento <Issuer> sia sempre specificato e non vuoto nel criterio GenerateSAMLAssertion.

Per correggere l'esempio precedente, specifica correttamente l'elemento <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>

Fai riferimento agli esempi delle norme SAMLAssertion.