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

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

SourceNotConfigured

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management 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.

نمونه خطا از صفحه نمایش

علت

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

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

تشخیص

  1. نام خط مشی تأیید اعتبار SAML ادعای ناموفق را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام خط مشی Validate SAML Assertion 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> تعریف شده و خالی نیست.

برای تصحیح مثال 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 UI یا Edge management 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 خاصی که در آن خرابی رخ داده است، بررسی کنید. اگر خط‌مشی 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 مراجعه کنید.

NullKeyStore

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا 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 با شکست مواجه می‌شود. یک نام Keystore معتبر مورد نیاز است.

تشخیص

  1. تمام خط‌مشی‌های Generate SAML Assertion را در پروکسی API خاصی که در آن خرابی رخ داده است، بررسی کنید. اگر خط‌مشی 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>

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

NullKeyStoreAlias

پیغام خطا

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

تشخیص

  1. تمام خط‌مشی‌های Generate SAML Assertion را در پروکسی API خاصی که در آن خرابی رخ داده است، بررسی کنید. اگر خط‌مشی 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>

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

صادر کننده صفر

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management 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> خالی باشد یا در خط‌مشی 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>

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