Résolution des erreurs de déploiement de la règle SAMLAssertion

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

SourceNotConfigured

Message d'erreur

Le déploiement du proxy d'API par le biais de l'UI Edge ou de l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Le déploiement du proxy d'API échoue avec cette erreur si un ou plusieurs des éléments suivants de la règle ValidateSAMLAssertion sont vides ou non définis : <Source>, <XPath>, <Namespaces> et <Namespace>.

Par exemple, si vous oubliez l'élément <XPath>, ou laissez l'élément <Source> ou ses entités vides, le déploiement du proxy d'API échoue.

Diagnostic

  1. Identifiez le nom de la règle ValidateSAMLAssertion en échec dans le message d'erreur. Par exemple, dans l'erreur suivante, le nom de la règle ValidateSAMLAssertion est Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Examinez le fichier XML de la règle ValidateSAMLAssertion ayant échoué. Vérifiez si un ou plusieurs des éléments suivants de la règle sont manquants ou vides : <Source>, <XPath>, <Namespaces>, <Namespace>. Si tel est le cas, il peut s'agir de la cause de l'erreur.

    Par exemple, la règle suivante comporte un élément <Namespaces> vide sous l'élément <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. Dans l'exemple ci-dessus, l'élément <Namespaces> est vide. Par conséquent, vous obtenez l'erreur suivante :

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

Solution

Assurez-vous que les valeurs de l'élément <Source> sont correctement configurées avec l'élément <Namespaces> et l'élément enfant <Namespace>. Vous devez également vous assurer que l'élément <XPath> est défini et qu'il n'est pas vide.

Pour corriger l'exemple de règle ValidateSAMLAssertion ci-dessus, vous pouvez ajouter les éléments <Namespace> et <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

Message d'erreur

Le déploiement du proxy d'API par le biais de l'UI Edge ou de l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Si l'élément <TrustStore> est vide ou non spécifié dans la règle ValidateSAMLAssertion, le déploiement du proxy d'API échoue. Vous devez indiquer un fichier Trust Store valide.

Diagnostic

  1. Examinez toutes les règles ValidateSAMLAssertion dans le proxy d'API spécifique où l'échec a eu lieu. S'il existe une règle ValidateSAMLAssertion dans laquelle l'élément <TrustStore> est vide ou non spécifié, il s'agit de la cause de l'erreur.

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

Solution

Assurez-vous que l'élément <TrustStore> est toujours spécifié et non vide dans la règle ValidateSAMLAssertion. Le nom <TrustStore> doit correspondre au nom d'un truststore valide qui existe dans tous les environnements dans lesquels vous essayez de déployer un proxy.

Pour corriger l'exemple ci-dessus, vous pouvez spécifier l'élément <TrustStore> avec une valeur valide.

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

Pour plus d'informations sur l'utilisation des truststores, consultez la page Truststores et keystores.

NullKeyStore

Message d'erreur

Le déploiement du proxy d'API par le biais de l'UI Edge ou de l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Si l'élément enfant <Name> est vide ou non spécifié dans l'élément <Keystore> de la règle GenerateSAMLAssertion, le déploiement du proxy d'API échoue. Veuillez indiquer un nom de keystore valide.

Diagnostic

  1. Examinez toutes les règles GenerateSAMLAssertion dans le proxy d'API spécifique où l'échec a eu lieu. S'il existe une règle GenerateSAMLAssertion dans laquelle l'élément enfant <Name> est vide ou n'est pas spécifié dans l'élément <Keystore>, il s'agit de la cause de l'erreur.

    La règle GenerateSAMLAssertion suivante contient un élément enfant <Name> vide dans l'élément <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>
    

Solution

Assurez-vous que l'élément enfant <Name> est toujours spécifié et non vide dans l'élément <Keystore> de la règle GenerateSAMLAssertion.

Pour corriger l'exemple ci-dessus, vous pouvez spécifier correctement l'élément <Name> et vous assurer qu'une valeur valide est spécifiée pour l'élément <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>

Reportez-vous aux exemples de code tirés de l'article "Règles SAMLAssertion".

NullKeyStoreAlias

Message d'erreur

Le déploiement du proxy d'API par le biais de l'UI Edge ou de l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Si l'élément enfant <Alias> est vide ou non spécifié dans l'élément <Keystore> de la règle GenerateSAMLAssertion, le déploiement du proxy d'API échoue. Vous devez saisir un alias de keystore valide.

Diagnostic

  1. Examinez toutes les règles GenerateSAMLAssertion dans le proxy d'API spécifique où l'échec a eu lieu. S'il existe une règle GenerateSAMLAssertion dans laquelle l'élément enfant <Alias> est vide ou n'est pas spécifié dans l'élément <Keystore>, il s'agit de la cause de l'erreur.

    La règle GenerateSAMLAssertion suivante contient un élément enfant <Alias> vide dans l'élément <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>
    

Solution

Assurez-vous que l'élément enfant <Name> est toujours spécifié et non vide dans l'élément <Keystore> de la règle GenerateSAMLAssertion.

Pour corriger l'exemple ci-dessus, vous pouvez spécifier correctement l'élément <Alias> et vous assurer qu'une valeur valide est spécifiée pour l'élément <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>

Reportez-vous aux exemples de code tirés de l'article "Règles SAMLAssertion".

NullIssuer

Message d'erreur

Le déploiement du proxy d'API par le biais de l'UI Edge ou de l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Si l'élément <Issuer> est vide ou n'est pas spécifié dans la règle GenerateSAMLAssertion, le déploiement du proxy d'API échoue. Vous devez saisir une valeur <Issuer> valide.

Diagnostic

  1. Examinez toutes les règles GenerateSAMLAssertion dans le proxy d'API spécifique où l'échec a eu lieu. S'il existe une règle GenerateSAMLAssertion dans laquelle l'élément <Issuer> est vide ou non spécifié, il s'agit de la cause de l'erreur.

    La règle GenerateSAMLAssertion suivante contient un élément <Issuer> vide :

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

Solution

Assurez-vous que l'élément <Issuer> est toujours spécifié et non vide dans la règle GenerateSAMLAssertion.

Pour corriger l'exemple ci-dessus, spécifiez correctement l'élément <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>

Reportez-vous aux exemples de code tirés de l'article "Règles SAMLAssertion".