عیب یابی خطای استقرار خط مشی ادعای SAML، عیب یابی خطای استقرار خط مشی ادعای SAML

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

منبع پیکربندی نشده

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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.

مثال تصویر خطا

علت

اگر یک یا چند مورد از عناصر زیر در سیاست Validate SAML Assertion تعریف نشده یا خالی باشند، پیاده‌سازی API Proxy با این خطا با شکست مواجه می‌شود: <Source> ، <XPath> ، <Namespaces> ، <Namespace> .

برای مثال، اگر عنصر <XPath> را از قلم بیندازید یا عنصر <Source> یا موجودیت‌های آن را خالی بگذارید، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. نام سیاست Validate SAML Assertion ناموفق را از پیام خطا شناسایی کنید. برای مثال، در خطای زیر، نام سیاست Validate SAML Assertion، Validate-SAML-Assertion-1 است.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. خطای Validate SAML Assertion policy XML را بررسی کنید. بررسی کنید که آیا یک یا چند مورد از عناصر زیر در این policy وجود ندارد یا خالی است: <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> تعریف شده و خالی نیست.

برای اصلاح مثال Validate SAML Assertion policy که در بالا نشان داده شده است، می‌توانید عناصر <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 از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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> خالی باشد یا در سیاست ValidateSAMLASertion مشخص نشده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود. یک Trust Store معتبر مورد نیاز است.

تشخیص

  1. تمام سیاست‌های Validate SAML Assertion را در API Proxy خاصی که خطا رخ داده است، بررسی کنید. اگر سیاستی در Validate SAML Assertion وجود دارد که در آن عنصر <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> همیشه در سیاست Validate SAML Assertion مشخص شده و خالی نباشد. نام <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 به Truststores و Keystores مراجعه کنید.

فروشگاه کلید پوچ

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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> از سیاست GenerateSAMLAsertion مشخص نشده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود. یک نام معتبر برای Keystore لازم است.

تشخیص

  1. تمام سیاست‌های Generate SAML Assertion را در API Proxy خاصی که خطا در آن رخ داده است، بررسی کنید. اگر سیاستی در Generate SAML Assertion وجود دارد که در آن عنصر فرزند <Name> خالی است یا در عنصر <Keystore> مشخص نشده است، علت خطا همین است.

    خط‌مشی Generate SAML Assertion زیر یک عنصر فرزند خالی <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> از خط‌مشی Generate SAML Assertion مشخص شده و خالی نباشد.

برای اصلاح مثال بالا، می‌توانید عنصر <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>

به نمونه‌هایی از نمونه‌های کد در مقاله مرجع سیاست SAMLAsertion مراجعه کنید.

نام مستعار NullKeyStore

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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> از سیاست Generate SAML Assertion مشخص نشده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود. یک نام مستعار معتبر برای Keystore مورد نیاز است.

تشخیص

  1. تمام سیاست‌های Generate SAML Assertion را در API Proxy خاصی که خطا در آن رخ داده است، بررسی کنید. اگر سیاستی در Generate SAML Assertion وجود دارد که در آن عنصر فرزند <Alias> خالی است یا در عنصر <Keystore> مشخص نشده است، علت خطا همین است.

    خط‌مشی Generate SAML Assertion زیر یک عنصر فرزند خالی به نام <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> از خط‌مشی Generate SAML Assertion مشخص شده و خالی نباشد.

برای اصلاح مثال بالا، می‌توانید عنصر <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>

به نمونه‌هایی از نمونه‌های کد در مقاله مرجع سیاست SAMLAsertion مراجعه کنید.

صادرکننده‌ی پوچ

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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

مثال پیام خطا

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

مثال تصویر خطا

علت

اگر عنصر <Issuer> خالی باشد یا در سیاست Generate SAML Assertion مشخص نشده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود. مقدار معتبر <Issuer> مورد نیاز است.

تشخیص

  1. تمام سیاست‌های Generate SAML Assertion را در پروکسی API خاصی که خطا در آن رخ داده است، بررسی کنید. اگر سیاستی در Generate SAML Assertion وجود دارد که در آن عنصر <Issuer> خالی است یا مشخص نشده است، علت خطا همین است.

    خط‌مشی Generate SAML Assertion زیر یک عنصر خالی <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> همیشه در خط‌مشی Generate SAML Assertion مشخص شده و خالی نباشد.

برای اصلاح مثال بالا، عنصر <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>

به نمونه‌هایی از نمونه‌های کد در مقاله مرجع سیاست SAMLAsertion مراجعه کنید.