การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบายการยืนยัน SAML ใช้งานได้

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

SourceNotConfigured

ข้อความแสดงข้อผิดพลาด

การติดตั้งใช้งานพร็อกซี API ผ่าน UI ของ Edge หรือการจัดการ Edge API ไม่สำเร็จพร้อมข้อความแสดงข้อผิดพลาดนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

การทำให้พร็อกซี API ใช้งานได้จะล้มเหลวพร้อมกับข้อผิดพลาดนี้ หากองค์ประกอบต่อไปนี้ของนโยบายการตรวจสอบการยืนยัน SAML อย่างน้อย 1 รายการไม่ได้กำหนดไว้หรือว่างเปล่า: <Source>, <XPath>, <Namespaces>, <Namespace>

เช่น หากคุณไม่มีองค์ประกอบ <XPath> หรือปล่อยองค์ประกอบ <Source> หรือเอนทิตีขององค์ประกอบนั้นว่างเปล่า การติดตั้งใช้งานพร็อกซี API จะดำเนินการไม่สำเร็จ

การวินิจฉัย

  1. ระบุชื่อนโยบายการยืนยัน SAML ที่ตรวจสอบไม่สําเร็จจากข้อความแสดงข้อผิดพลาด เช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายตรวจสอบข้อความยืนยัน SAML คือ Validate-SAML-Assertion-1

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. ตรวจสอบ XML ของนโยบายการยืนยัน SAML ที่ล้มเหลว ตรวจสอบว่าองค์ประกอบต่อไปนี้ของนโยบายขาดหายไปหรือว่างเปล่าหรือไม่ <Source>, <XPath>, <Namespaces>, <Namespace> ถ้าใช่ นั่นอาจเป็นสาเหตุของ ข้อผิดพลาด

    ตัวอย่างเช่น นโยบายต่อไปนี้มีองค์ประกอบ <Namespaces> ที่ว่างเปล่าภายใต้องค์ประกอบ <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. ในตัวอย่างข้างต้น องค์ประกอบ <Namespaces> ว่างเปล่า คุณจึงได้รับข้อผิดพลาด

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

ความละเอียด

ตรวจสอบว่าค่าขององค์ประกอบ <Source> ได้รับการกําหนดค่าอย่างถูกต้องกับองค์ประกอบ <Namespaces> และองค์ประกอบย่อย <Namespace> นอกจากนี้ คุณต้องตรวจสอบว่าได้กำหนดองค์ประกอบ <XPath> ไว้แล้วและไม่ว่างเปล่า

หากต้องการแก้ไขตัวอย่างนโยบายการตรวจสอบการยืนยัน SAML ที่แสดงด้านบน ให้เพิ่มเอลิเมนต์ <Namespace> รวมทั้ง <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

ข้อความแสดงข้อผิดพลาด

การติดตั้งใช้งานพร็อกซี API ผ่าน UI ของ Edge หรือการจัดการ Edge API ไม่สำเร็จพร้อมข้อความแสดงข้อผิดพลาดนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

หากองค์ประกอบ <TrustStore> ว่างเปล่าหรือไม่ระบุไว้ในนโยบาย ValidateSAMLAssertion การติดตั้งใช้งาน API พร็อกซีจะไม่สำเร็จ ต้องระบุที่เก็บข้อมูลที่เชื่อถือได้ซึ่งถูกต้อง

การวินิจฉัย

  1. ตรวจสอบนโยบาย Validate SAML Assertion ทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด หากมีนโยบายการตรวจสอบการยืนยัน SAML ที่องค์ประกอบ <TrustStore> ว่างเปล่าหรือไม่ได้ระบุ นั่นก็คือสาเหตุของข้อผิดพลาด

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

ความละเอียด

ตรวจสอบว่ามีการระบุองค์ประกอบ <TrustStore> เสมอและไม่ว่างเปล่าภายในนโยบาย "ตรวจสอบการยืนยันสิทธิ์ SAML" ชื่อ <TrustStore> ควรตรงกับชื่อของ TrustStore ที่ถูกต้องซึ่งมีอยู่ในสภาพแวดล้อมทั้งหมดที่คุณพยายามจะติดตั้งใช้งานพร็อกซี

หากต้องการแก้ไขตัวอย่างข้างต้น คุณสามารถระบุองค์ประกอบ <TrustStore> ด้วยค่าที่ถูกต้อง

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

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ Truststore ที่หัวข้อ Truststore และ Keystore

NullKeyStore

ข้อความแสดงข้อผิดพลาด

การติดตั้งใช้งานพร็อกซี API ผ่าน UI ของ Edge หรือ Edge Management API ไม่สําเร็จพร้อมแสดงข้อความแสดงข้อผิดพลาดนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

หากองค์ประกอบย่อย <Name> ว่างเปล่าหรือไม่ได้ระบุในเอลิเมนต์ <Keystore> ของนโยบาย GenerateSAMLAssertion จะทำให้การทำให้พร็อกซี API ใช้งานได้ล้มเหลว ต้องระบุชื่อคีย์สโตร์ที่ถูกต้อง

การวินิจฉัย

  1. ตรวจสอบนโยบายการสร้างการยืนยัน SAML ทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด หากมีนโยบาย "สร้างการยืนยัน SAML" ที่องค์ประกอบย่อย <Name> ว่างเปล่าหรือไม่ได้ระบุในองค์ประกอบ <Keystore> นั่นก็คือสาเหตุของข้อผิดพลาด

    นโยบายสร้างการยืนยัน SAML ต่อไปนี้มีองค์ประกอบย่อย <Name> ในองค์ประกอบ <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>
    

ความละเอียด

ตรวจสอบว่าได้ระบุองค์ประกอบย่อย <Name> เสมอและไม่ใช่ค่าว่างภายในองค์ประกอบ <Keystore> ของนโยบายสร้างการยืนยัน SAML

หากต้องการแก้ไขตัวอย่างข้างต้น คุณสามารถระบุองค์ประกอบ <Name> อย่างถูกต้อง รวมถึงตรวจสอบว่าได้ระบุค่าที่ถูกต้องให้กับองค์ประกอบ <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>

ดูตัวอย่างจากตัวอย่างโค้ดในบทความอ้างอิงนโยบาย SAMLAssertion

NullKeyStoreAlias

ข้อความแสดงข้อผิดพลาด

การติดตั้งใช้งานพร็อกซี API ผ่าน UI ของ Edge หรือการจัดการ Edge API ไม่สำเร็จพร้อมข้อความแสดงข้อผิดพลาดนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

หากองค์ประกอบย่อย <Alias> ว่างเปล่าหรือไม่ได้ระบุในองค์ประกอบ <Keystore> ของนโยบาย "สร้างการยืนยันสิทธิ์ SAML" การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว ต้องมีชื่อแทนคีย์สโตร์ที่ถูกต้อง

การวินิจฉัย

  1. ตรวจสอบนโยบายการสร้างการยืนยัน SAML ทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด หากมีนโยบายการสร้างการยืนยัน SAML ซึ่งองค์ประกอบย่อย <Alias> ว่างเปล่าหรือไม่ระบุไว้ในองค์ประกอบ <Keystore> แสดงว่านโยบายดังกล่าวเป็นสาเหตุของข้อผิดพลาด

    นโยบายสร้างการยืนยัน SAML ต่อไปนี้มีองค์ประกอบย่อย <Alias> ในองค์ประกอบ <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>
    

ความละเอียด

ตรวจสอบว่ามีการระบุองค์ประกอบย่อย <Name> เสมอและไม่ใช่ค่าว่างภายในองค์ประกอบ <Keystore> ของนโยบายสร้างการยืนยัน SAML

หากต้องการแก้ไขตัวอย่างข้างต้น ให้ระบุองค์ประกอบ <Alias> ให้ถูกต้องและระบุค่าที่ถูกต้องให้กับองค์ประกอบ <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>

ดูตัวอย่างจากตัวอย่างโค้ดในบทความอ้างอิงนโยบาย SAMLAssertion

NullIssuer

ข้อความแสดงข้อผิดพลาด

การติดตั้งใช้งานพร็อกซี API ผ่าน UI ของ Edge หรือการจัดการ Edge API ไม่สำเร็จพร้อมข้อความแสดงข้อผิดพลาดนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

หากองค์ประกอบ <Issuer> ว่างเปล่าหรือไม่ได้ระบุในนโยบาย "สร้างการยืนยัน SAML" การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว ต้องระบุค่า <Issuer> ที่ถูกต้อง

การวินิจฉัย

  1. ตรวจสอบนโยบายการสร้างการยืนยัน SAML ทั้งหมดใน API Proxy ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด หากมีนโยบายการสร้างการยืนยัน SAML ที่มีองค์ประกอบ <Issuer> ว่างเปล่าหรือไม่ระบุ แสดงว่านี่คือสาเหตุของข้อผิดพลาด

    นโยบายสร้างการยืนยัน SAML ต่อไปนี้มีองค์ประกอบ <Issuer> ว่างเปล่า

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

ความละเอียด

ตรวจสอบว่าได้ระบุองค์ประกอบ <Issuer> เสมอและไม่ใช่ค่าว่างในนโยบายสร้างการยืนยัน SAML

วิธีแก้ไขตัวอย่างข้างต้นคือระบุองค์ประกอบ <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>

ดูตัวอย่างจากตัวอย่างโค้ดในบทความอ้างอิงนโยบาย SAMLAssertion