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

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

SourceNotConfigured

Messaggio di errore

Il deployment del proxy API tramite la UI Edge o l'API di gestione Edge 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

Causa

Il deployment del proxy API non va a buon fine con questo errore se uno o più dei seguenti elementi del criterio Validate SAML Assertion 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 della policy Validate SAML Assertion non riuscita dal messaggio di errore. Ad esempio, nel seguente errore il nome della policy di convalida dell'asserzione SAML è Validate-SAML-Assertion-1.

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

    Ad esempio, la seguente policy ha un elemento <Namespaces> vuoto sotto l'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 di esempio Validate SAML Assertion 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 Edge o l'API di gestione Edge 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

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 policy Validate SAML Assertion nel proxy API specifico in cui si è verificato l'errore. Se esiste una policy di convalida dell'asserzione SAML 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 di convalida dell'asserzione SAML. 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>

Per ulteriori informazioni su come utilizzare Truststore, consulta Truststore e keystore.

NullKeyStore

Messaggio di errore

Il deployment del proxy API tramite la UI Edge o l'API di gestione Edge 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

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 policy Generate SAML Assertion nel proxy API specifico in cui si è verificato l'errore. Se esiste un criterio Generate SAML Assertion in cui l'elemento secondario <Name> è vuoto o non specificato nell'elemento <Keystore>, questo è la causa dell'errore.

    La seguente policy Generate SAML Assertion (Genera asserzione SAML) ha un elemento secondario vuoto <Name> 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 Genera asserzione SAML.

Per correggere l'esempio precedente, puoi specificare correttamente l'elemento <Name> e assicurarti che all'elemento <Alias> sia specificato un valore valido.

<?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 riportati nell'articolo di riferimento sugli esempi di codice nel criterio SAMLAssertion.

NullKeyStoreAlias

Messaggio di errore

Il deployment del proxy API tramite la UI Edge o l'API di gestione Edge 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

Causa

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

Diagnosi

  1. Esamina tutti i criteri Genera asserzione SAML nel proxy API specifico in cui si è verificato l'errore. Se esiste un criterio Generate SAML Assertion in cui l'elemento secondario <Alias> è vuoto o non specificato nell'elemento <Keystore>, questo è la causa dell'errore.

    La seguente policy Generate SAML Assertion (Genera asserzione SAML) ha un elemento secondario vuoto <Alias> 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 Genera asserzione SAML.

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 riportati nell'articolo di riferimento sugli esempi di codice nel criterio SAMLAssertion.

NullIssuer

Messaggio di errore

Il deployment del proxy API tramite la UI Edge o l'API di gestione Edge 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

Causa

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

Diagnosi

  1. Esamina tutti i criteri Genera asserzione SAML nel proxy API specifico in cui si è verificato l'errore. Se esiste una policy Genera asserzione SAML in cui l'elemento <Issuer> è vuoto o non specificato, questo è il motivo dell'errore.

    Il seguente criterio Generate SAML Assertion ha 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 Genera asserzione SAML.

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 riportati nell'articolo di riferimento sugli esempi di codice nel criterio SAMLAssertion.