Khắc phục sự cố triển khai chính sách xác nhận SAML

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu về Apigee X.
thông tin

SourceNotConfigured

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công với thông báo lỗi sau:

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

Ví dụ về thông báo lỗi

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

Ảnh chụp màn hình lỗi mẫu

Nguyên nhân

Quá trình triển khai Proxy API sẽ không thành công với lỗi này nếu một hoặc nhiều phần tử sau đây của chính sách Xác thực câu nhận định SAML không được xác định hoặc trống: <Source>, <XPath>, <Namespaces>, <Namespace>.

Ví dụ: nếu bạn thiếu phần tử <XPath> hoặc để trống phần tử <Source> hoặc các thực thể của phần tử đó, thì quá trình triển khai proxy API sẽ không thành công.

Chẩn đoán

  1. Xác định tên chính sách Xác thực câu nhận định SAML không thành công trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách Xác thực câu nhận định SAML là Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Kiểm tra tệp XML của chính sách xác nhận SAML không xác thực được. Kiểm tra xem có thiếu hoặc trống một hoặc nhiều phần tử sau đây của chính sách hay không: <Source>, <XPath>, <Namespaces>, <Namespace>. Nếu có, đó có thể là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây có phần tử <Namespaces> trống trong phần tử <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. Trong ví dụ trên, phần tử <Namespaces> bị trống nên bạn sẽ gặp lỗi:

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

Độ phân giải

Đảm bảo rằng các giá trị của phần tử <Source> được định cấu hình chính xác với phần tử <Namespaces> và phần tử con <Namespace>. Bạn cũng cần đảm bảo phần tử <XPath> được xác định và không để trống.

Để sửa chính sách Xác thực câu nhận định SAML trong ví dụ ở trên, bạn có thể thêm các phần tử <Namespace> cũng như <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

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công với thông báo lỗi sau:

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

Ví dụ về thông báo lỗi

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

Ảnh chụp màn hình lỗi mẫu

Nguyên nhân

Nếu phần tử <TrustStore> trống hoặc không được chỉ định trong chính sách ValidateSAMLAssertion, thì quá trình triển khai proxy API sẽ không thành công. Bạn phải có một Cửa hàng tin cậy hợp lệ.

Chẩn đoán

  1. Kiểm tra tất cả các chính sách Xác thực câu nhận định SAML trong Proxy API cụ thể nơi xảy ra lỗi. Nếu có bất kỳ chính sách Xác thực câu nhận định SAML nào mà phần tử <TrustStore> trống hoặc không được chỉ định, thì đó là nguyên nhân gây ra lỗi.

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

Độ phân giải

Đảm bảo rằng phần tử <TrustStore> luôn được chỉ định và không để trống trong Chính sách xác nhận SAML. Tên <TrustStore> phải khớp với tên của một TrustStore hợp lệ tồn tại trong tất cả các môi trường mà bạn đang cố gắng triển khai một proxy.

Để sửa ví dụ trên, bạn có thể chỉ định phần tử <TrustStore> bằng một giá trị hợp lệ.

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

Tham khảo phần Kho lưu trữ đáng tin cậy và Kho khoá để biết thêm thông tin về cách sử dụng Kho lưu trữ đáng tin cậy.

NullKeyStore

Thông báo Lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi này:

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

Ví dụ về thông báo lỗi

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

Ảnh chụp màn hình lỗi mẫu

Nguyên nhân

Nếu phần tử con <Name> trống hoặc không được chỉ định trong phần tử <Keystore> của chính sách GenerateSAMLAssertion, thì quá trình triển khai proxy API sẽ không thành công. Bạn phải nhập tên Kho khoá hợp lệ.

Chẩn đoán

  1. Kiểm tra tất cả chính sách Tạo câu nhận định SAML trong Proxy API cụ thể đã xảy ra lỗi. Nếu có bất kỳ chính sách Tạo câu nhận định SAML nào mà phần tử con <Name> trống hoặc không được chỉ định trong phần tử <Keystore>, thì đó là nguyên nhân gây ra lỗi.

    Chính sách Tạo câu nhận định SAML sau đây có một phần tử con trống <Name> trong phần tử <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>
    

Độ phân giải

Đảm bảo rằng phần tử con <Name> luôn được chỉ định và không trống trong phần tử <Keystore> của chính sách Tạo câu nhận định SAML.

Để sửa ví dụ trên, bạn có thể chỉ định chính xác phần tử <Name>, cũng như đảm bảo chỉ định giá trị hợp lệ cho phần tử <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>

Tham khảo các ví dụ trong Mã mẫu trong bài viết tham khảo về Chính sách SAMLAssertion.

NullKeyStoreAlias

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công với thông báo lỗi sau:

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

Ví dụ về thông báo lỗi

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

Ảnh chụp màn hình lỗi mẫu

Nguyên nhân

Nếu phần tử con <Alias> trống hoặc không được chỉ định trong phần tử <Keystore> của chính sách Tạo câu nhận định SAML, thì quá trình triển khai proxy API sẽ không thành công. Bạn phải có email đại diện hợp lệ cho Kho khoá.

Chẩn đoán

  1. Kiểm tra tất cả các chính sách Tạo câu nhận định SAML trong Proxy API cụ thể nơi xảy ra lỗi. Nếu có bất kỳ chính sách Xác nhận SAML nào mà trong đó phần tử con <Alias> đang trống hoặc không được chỉ định trong phần tử <Keystore>, thì đó là nguyên nhân gây ra lỗi.

    Chính sách Tạo câu nhận định SAML sau đây có một phần tử con trống <Alias> trong phần tử <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>
    

Độ phân giải

Đảm bảo phần tử con <Name> luôn được chỉ định và không để trống trong phần tử <Keystore> của chính sách Tạo xác nhận SAML.

Để sửa ví dụ trên, bạn có thể chỉ định chính xác phần tử <Alias> cũng như đảm bảo rằng phần tử <Name> được chỉ định giá trị hợp lệ.

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

Hãy tham khảo ví dụ trong Bài viết tham khảo về chính sách SAMLAssertion.

NullIssuer

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công với thông báo lỗi sau:

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

Ví dụ về thông báo lỗi

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

Ảnh chụp màn hình lỗi mẫu

Nguyên nhân

Nếu phần tử <Issuer> trống hoặc không được chỉ định trong chính sách Tạo Xác nhận SAML, thì việc triển khai proxy API sẽ không thành công. Bạn phải nhập một giá trị <Issuer> hợp lệ.

Chẩn đoán

  1. Kiểm tra tất cả các chính sách Tạo câu nhận định SAML trong Proxy API cụ thể nơi xảy ra lỗi. Nếu có bất kỳ chính sách Tạo câu nhận định SAML nào trong đó phần tử <Issuer> trống hoặc không được chỉ định, thì đó là nguyên nhân gây ra lỗi.

    Chính sách Tạo câu nhận định SAML sau đây có phần tử <Issuer> trống:

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

Độ phân giải

Đảm bảo rằng phần tử <Issuer> luôn được chỉ định và không để trống trong chính sách Tạo câu nhận định SAML.

Để sửa ví dụ trên, hãy chỉ định chính xác phần tử <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>

Tham khảo các ví dụ trong Mã mẫu trong bài viết tham khảo về Chính sách SAMLAssertion.