Fehlerbehebung bei der Bereitstellung von SAMLAssertion-Richtlinien

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

SourceNotConfigured

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder Apigee API schlägt mit dieser Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Screenshot eines Beispielfehlers

Fehler beim Bereitstellen von Version 2 zum Testen.

Ursache

Die Bereitstellung des API-Proxys schlägt mit diesem Fehler fehl, wenn eines oder mehrere der folgenden Elemente der ValidateSAMLAssertion-Richtlinie nicht definiert oder leer ist: <Source> .<XPath> .<Namespaces> .<Namespace>.

Beispiel: Wenn Sie das Element <XPath> nicht angeben oder das Element <Source> bzw. seine Entitäten leer lassen, schlägt die Bereitstellung des API-Proxys fehl.

Diagnose

  1. Ermitteln Sie in der Fehlermeldung den Namen der fehlgeschlagenen ValidateSAMLAssertion-Richtlinie. Im folgenden Fehler lautet der ValidateSAMLAssertion-Richtlinienname beispielsweise Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Sehen Sie sich die fehlerhafte XML-Richtlinie ValidateSAMLAssertion an. Prüfen Sie, ob eines oder mehrere der folgenden Elemente der Richtlinie fehlen oder leer sind: <Source>, <XPath>, <Namespaces>, <Namespace>. Wenn ja, könnte dies die Ursache des Fehlers sein.

    Die folgende Richtlinie enthält beispielsweise ein leeres Element <Namespaces>unter dem Element <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. Da im Beispiel oben das Element <Namespaces> leer ist, wird dieser Fehler zurückgegeben:

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

Lösung

Achten Sie darauf, dass die Werte des <Source>-Elements mit dem <Namespaces>-Element und dem untergeordneten Element <Namespace> richtig konfiguriert sind. Achten Sie außerdem darauf, dass das Element <XPath> definiert und nicht leer ist.

Um die oben gezeigte Beispielrichtlinie ValidateSAMLAssertion zu korrigieren, können Sie die Elemente <Namespace> und <XPath> hinzufügen:

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder Apigee API schlägt mit dieser Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Screenshot eines Beispielfehlers

Fehler beim Bereitstellen von Version 2 zum Testen.

Ursache

Wenn das Element <TrustStore> leer oder nicht in der ValidateSAMLAssertion-Richtlinie angegeben ist, schlägt die Bereitstellung des API-Proxys fehl. Ein gültiger Trust Store ist erforderlich.

Diagnose

  1. Prüfen Sie alle ValidateSAMLAssertion-Richtlinien im spezifischen API-Proxy, in dem der Fehler aufgetreten ist. Wenn es eine ValidateSAMLAssertion-Richtlinie gibt, in der das Element <TrustStore> leer oder nicht angegeben ist, ist dies die Ursache des Fehlers.

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

Lösung

Achten Sie darauf, dass das Element <TrustStore> in der SAMLAssertion-Richtlinie immer angegeben und nicht leer ist. Der <TrustStore>-Name sollte dem Namen eines gültigen TrustStore entsprechen, der in allen Umgebungen vorhanden ist, in denen Sie einen Proxy bereitstellen möchten.

Zur Behebung des obigen Beispiels geben Sie das Element <TrustStore> mit einem gültigen Wert an.

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Screenshot eines Beispielfehlers

Fehler beim Bereitstellen von Überarbeitung 4 zum Testen.

Ursache

Wenn das untergeordnete Element <Name> leer oder im Element <Keystore> der GenerateSAMLAssertion-Richtlinie nicht angegeben ist, schlägt die Bereitstellung des API-Proxys fehl. Ein gültiger Keystore-Name ist erforderlich.

Diagnose

  1. Prüfen Sie alle GenerateSAMLAssertion-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Wenn es eine GenerateSAMLAssertion-Richtlinie gibt, in der das untergeordnete Element <Name> leer oder nicht im Element <Keystore> angegeben ist, ist dies die Ursache des Fehlers.

    Die folgende GenerateSAMLAssertion-Richtlinie enthält ein leeres untergeordnetes Element <Name> im Element <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>
    

Lösung

Achten Sie darauf, dass das untergeordnete Element <Name> immer im Element <Keystore> der Richtlinie GenerateSAMLAssertion angegeben und nicht leer ist.

Zur Behebung des obigen Beispiels können Sie das Element <Name> korrekt angeben und dafür sorgen, dass ein gültiger Wert für das Element <Alias> angegeben ist.

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

Hier finden Sie Beispiele für die SAMLAssertion-Richtlinie.

NullKeyStoreAlias

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder Apigee API schlägt mit dieser Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Screenshot eines Beispielfehlers

Fehler beim Bereitstellen von Überarbeitung 4 zum Testen.

Ursache

Wenn das untergeordnete Element <Alias> leer oder im Element <Keystore> der GenerateSAMLAssertion-Richtlinie nicht angegeben ist, schlägt die Bereitstellung des API-Proxys fehl. Ein gültiger Keystore-Alias ist erforderlich.

Diagnose

  1. Prüfen Sie alle GenerateSAMLAssertion-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Wenn es eine GenerateSAMLAssertion-Richtlinie gibt, in der das untergeordnete Element <Alias> leer oder nicht im Element <Keystore> angegeben ist, ist dies die Ursache des Fehlers.

    Das folgende GenerateSAMLAssertion-Element enthält ein leeres untergeordnetes Element <Alias> im Element <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>
    

Lösung

Achten Sie darauf, dass das untergeordnete Element <Name> immer im Element <Keystore> der Richtlinie GenerateSAMLAssertion angegeben und nicht leer ist.

Zur Behebung des obigen Beispiels können Sie das Element <Alias> korrekt angeben und dafür sorgen, dass ein gültiger Wert für das Element <Name> angegeben ist.

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

Hier finden Sie Beispiele für die SAMLAssertion-Richtlinie.

NullIssuer

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder Apigee API schlägt mit dieser Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Screenshot eines Beispielfehlers

Fehler beim Bereitstellen von Überarbeitung 4 zum Testen.

Ursache

Wenn das Element <Issuer> leer oder nicht in der GenerateSAMLAssertion-Richtlinie angegeben ist, schlägt die Bereitstellung des API-Proxys fehl. Geben Sie einen gültigen <Issuer>-Wert ein.

Diagnose

  1. Prüfen Sie alle GenerateSAMLAssertion-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Wenn es eine GenerateSAMLAssertion-Richtlinie gibt, in der das Element <Issuer> leer oder nicht angegeben ist, ist dies die Ursache des Fehlers.

    Die folgende GenerateSAMLAssertion-Richtlinie enthält ein leeres <Issuer>-Element:

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

Lösung

Achten Sie darauf, dass das Element <Issuer> in der GenerateSAMLAssertion-Richtlinie immer angegeben und nicht leer ist.

Geben Sie das Element <Issuer> korrekt an, um das obige Beispiel zu korrigieren:

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

Hier finden Sie Beispiele für die SAMLAssertion-Richtlinie.