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.
Chuyển đến tài liệu về Apigee X.
thông tin

SourceNotConfigured

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 sau:

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

Thông báo lỗi mẫu

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 ví dụ

Nguyên nhân

Không triển khai được Proxy API 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 SAML không được xác thực hoặc để trống: <Source>, <XPath>, <Namespaces>, <Namespace>.

Ví dụ: nếu bạn bỏ lỡ 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ì sẽ không thể triển khai proxy API.

Chẩn đoán

  1. Xác định tên chính sách Xác thực SAML xác thực 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 SAML xác thực là Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. Kiểm tra XML của Chính sách xác thực xác thực SAML không thành công. Hãy kiểm tra xem có ít nhất một thành phần sau đây của chính sách này bị thiếu hoặc để trống hay không: <Source>, <XPath>, <Namespaces>, <Namespace>. Nếu có thì đó 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> trống, do đó bạn sẽ gặp lỗi:

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

Độ phân giải

Hãy đả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 bị trống.

Để sửa ví dụ về Chính sách xác thực xác nhận SAML nêu 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

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 sau:

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

Thông báo lỗi mẫu

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 ví dụ

Nguyên nhân

Nếu phần tử <TrustStore> trống hoặc không được chỉ định trong chính sách Xác thực SAMLAssertion, thì quá trình triển khai proxy API sẽ không thành công. Bạn phải có kho lưu trữ Trust Store hợp lệ.

Chẩn đoán

  1. Kiểm tra tất cả các chính sách Xác thực xác nhận 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 xác thực SAML nào mà trong đó phần tử <TrustStore> bị 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 phần tử <TrustStore> luôn được chỉ định và không để trống trong chính sách Xác thực 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 mọi môi trường mà bạn đang cố gắng triển khai proxy.

Để sửa ví dụ trên, bạn có thể chỉ định phần tử <TrustStore> có 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>

Hãy tham khảo bài viết Kho khoá và kho khoá để biết thêm thông tin về cách sử dụng Truststore.

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 sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình lỗi ví dụ

Nguyên nhân

Nếu phần tử con <Name> bị trống hoặc không được chỉ định trong phần tử <Keystore> của chính sách Tạo SAMLAssertion, 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ả các chính sách Tạo xác nhận 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 xác nhận SAML nào mà trong đó phần tử con <Name> bị 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 xác nhận SAML sau đây có phần tử con <Name> trống 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 Tạo chính sách xác nhận 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 rằng giá trị hợp lệ được chỉ định 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 ví dụ trong Mã mẫu trong Bài viết tham khảo Chính sách xác nhận SAML.

NullKeyStoreAlias

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 sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình lỗi ví dụ

Nguyên nhân

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

Chẩn đoán

  1. Kiểm tra tất cả các chính sách Tạo xác nhận 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 xác nhận SAML nào mà trong đó phần tử con <Alias> bị 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 xác nhận SAML sau đây có phần tử con <Alias> trống 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 rằng phần tử con <Name> luôn được chỉ định và không được để 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 một giá trị hợp lệ được chỉ định cho phần tử <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>

Tham khảo ví dụ trong Mã mẫu trong Bài viết tham khảo Chính sách xác nhận SAML.

NullIssuer

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 sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình lỗi ví dụ

Nguyên nhân

Nếu phần tử <Issuer> bị trống hoặc không được chỉ định trong Chính sách tạo xác nhận SAML, thì sẽ không triển khai được proxy API. Bạn phải cung cấp 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 xác nhận 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 xác nhận SAML nào trong đó phần tử <Issuer> bị 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 xác nhận 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 xác nhận tạo SAML.

Để sửa ví dụ trên, hãy chỉ định đúng 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 ví dụ trong Mã mẫu trong Bài viết tham khảo Chính sách xác nhận SAML.