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

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.

गड़बड़ी का स्क्रीनशॉट

वजह

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

ट्रस्टस्टोर इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, ट्रस्टस्टोर और कीस्टोर लेख पढ़ें.

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.

गड़बड़ी का स्क्रीनशॉट

वजह

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

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

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

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

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.

गड़बड़ी का स्क्रीनशॉट

वजह

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

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

  1. किसी खास एपीआई प्रॉक्सी में, जनरेट किए गए एसएएमएल असर से जुड़ी सभी नीतियों की जांच करें अगर कोई ऐसी Generate SAML Assertion नीति है जिसमें चाइल्ड एलिमेंट <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>
    

रिज़ॉल्यूशन

पक्का करें कि SAML एश्योरेंस जनरेट करने की नीति के <Keystore> एलिमेंट में, चाइल्ड एलिमेंट <Name> हमेशा मौजूद हो और खाली न हो.

ऊपर दिए गए उदाहरण को ठीक करने के लिए, <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 नीति के रेफ़रंस लेख में दिए गए कोड सैंपल देखें.

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

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