एसएएमएल दावा नीति के डिप्लॉयमेंट से जुड़ी गड़बड़ी की समस्या हल करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

SourceNotConfigured

गड़बड़ी संदेश

इस गड़बड़ी के मैसेज के साथ 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.

गड़बड़ी का उदाहरण

वजह

अगर एसएएमएल की पुष्टि करने की नीति का इनमें से एक या उससे ज़्यादा एलिमेंट तय या खाली नहीं हैं, तो इस गड़बड़ी के साथ एपीआई प्रॉक्सी का डिप्लॉयमेंट काम नहीं करेगा: <Source>, <XPath>, <Namespaces>, <Namespace>.

उदाहरण के लिए, अगर आपसे <XPath> एलिमेंट छूट जाता है या <Source> एलिमेंट या उसकी इकाइयों को खाली छोड़ दिया जाता है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.

संक्रमण की जांच

  1. गड़बड़ी के मैसेज से, पुष्टि के लिए एसएएमएल नीति के नाम की पुष्टि नहीं की जा सकी. उदाहरण के लिए, इस गड़बड़ी में SAML के दावे की नीति का नाम Validate-SAML-Assertion-1 है.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. एसएएमएल दावे की नीति की पुष्टि नहीं हो सकी, इसकी जांच करें. देखें कि नीति का इनमें से एक या एक से ज़्यादा एलिमेंट मौजूद नहीं हैं या खाली हैं: <Source>, <XPath>, <Namespaces>, <Namespace>. अगर ऐसा है, तो यह गड़बड़ी की वजह हो सकती है.

    उदाहरण के लिए, यहां दी गई नीति में <Source> एलिमेंट के नीचे एक खाली <Namespaces> एलिमेंट है:

    <?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> एलिमेंट तय किया गया हो और वह खाली न हो.

ऊपर दी गई, एसएएमएल के दावे की पुष्टि करने की नीति के उदाहरण को ठीक करने के लिए, <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

गड़बड़ी संदेश

इस गड़बड़ी के मैसेज के साथ 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> एलिमेंट खाली है या ValidateSAMLAssertion की नीति में इसके बारे में नहीं बताया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. एक मान्य ट्रस्ट स्टोर होना ज़रूरी है.

संक्रमण की जांच

  1. जहां गड़बड़ी हुई है उस खास एपीआई प्रॉक्सी में, पुष्टि करने वाले एसएएमएल दावे की सभी नीतियों की जांच करें. अगर 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> एलिमेंट हमेशा चुना गया हो और खाली न हो. <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

गड़बड़ी संदेश

इस गड़बड़ी के मैसेज के साथ 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> खाली है या generateSAMLAssertion की नीति के<Keystore> एलिमेंट में नहीं दिया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. एक मान्य कीस्टोर नाम आवश्यक है.

संक्रमण की जांच

  1. जहां गड़बड़ी हुई है उस खास एपीआई प्रॉक्सी में, जनरेट किए गए एसएएमएल दावे की सभी नीतियों की जांच करें. अगर SAML के दावे की कोई ऐसी नीति है जिसमें चाइल्ड एलिमेंट <Name> खाली है या <Keystore> एलिमेंट में उसकी जानकारी नहीं दी गई है, तो इस गड़बड़ी की वजह यही है.

    एसएएमएल के दावे की यहां दी गई नीति के <Keystore> एलिमेंट में, चाइल्ड एलिमेंट <Name> खाली है:

    <?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> एलिमेंट में खाली न हो.

ऊपर दिए गए उदाहरण को ठीक करने के लिए, <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>

SSAMLAsertion की नीति के रेफ़रंस वाले लेख में कोड के सैंपल के उदाहरण देखें.

NullKeyStoreAlias

गड़बड़ी संदेश

इस गड़बड़ी के मैसेज के साथ 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.

गड़बड़ी का उदाहरण

वजह

अगर एसएएमएल एलिमेंट को जनरेट करने की नीति के तहत <Keystore> एलिमेंट में कोई चाइल्ड एलिमेंट <Alias> खाली है या उसके बारे में नहीं बताया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकेगा. एक मान्य कीस्टोर उपनाम ज़रूरी है.

संक्रमण की जांच

  1. जहां गड़बड़ी हुई है उस खास एपीआई प्रॉक्सी में, जनरेट किए गए एसएएमएल दावे की सभी नीतियों की जांच करें. अगर SAML के दावे की कोई ऐसी नीति है जिसमें चाइल्ड एलिमेंट <Alias> खाली है या <Keystore> एलिमेंट में उसकी जानकारी नहीं दी गई है, तो इस गड़बड़ी की वजह यही है.

    एसएएमएल के दावे की यहां दी गई नीति के <Keystore> एलिमेंट में, चाइल्ड एलिमेंट <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></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> एलिमेंट में खाली न हो.

ऊपर दिए गए उदाहरण को ठीक करने के लिए, <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>

SSAMLAsertion की नीति के रेफ़रंस वाले लेख में कोड के सैंपल के उदाहरण देखें.

NullIssuer

गड़बड़ी संदेश

इस गड़बड़ी के मैसेज के साथ 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> एलिमेंट खाली है या एसएएमएल के दावे की नीति में इसके बारे में नहीं बताया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. एक मान्य <Issuer> वैल्यू डालना ज़रूरी है.

संक्रमण की जांच

  1. उस खास एपीआई प्रॉक्सी में, जनरेट किए गए एसएएमएल के असर की सभी नीतियों की जांच करें जहां गड़बड़ी हुई है. अगर कोई ऐसी एसएएमएल के दावे की नीति है जिसमें <Issuer> एलिमेंट खाली है या उसके बारे में नहीं बताया गया है, तो यही गड़बड़ी की वजह है.

    यहां दी गई एसएएमएल के दावे की जनरेट की गई नीति में, <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> एलिमेंट हमेशा दिखाया गया हो और खाली न हो.

ऊपर दिए गए उदाहरण को ठीक करने के लिए, <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>

SSAMLAsertion की नीति के रेफ़रंस वाले लेख में कोड के सैंपल के उदाहरण देखें.