פתרון בעיות של שגיאות פריסה של מדיניות טענת נכוֹנוּת (assertion) ב-SAML

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

SourceNotConfigured

הודעת שגיאה

פריסה של שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או ניהול Edge ה-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.

צילום מסך של שגיאה לדוגמה

סיבה

הפריסה של שרת ה-proxy ל-API נכשלת עם השגיאה הזו אם אחד או יותר מהגורמים הרכיבים הבאים של המדיניות בנושא אימות טענות נכוֹנוּת (assertion) של SAML לא מוגדר או ריק: <Source>, <XPath>, <Namespaces>, <Namespace>.

לדוגמה, אם מפספסים את הרכיב <XPath> או עוזבים את המאפיין <Source> או שהישויות שלו ריקות, הפריסה של שרת ה-proxy ל-API נכשלת.

אבחון

  1. זיהוי של שם מדיניות טענת הנכוֹנוּת (assertion) של SAML שנכשל מ- הודעת שגיאה. לדוגמה, בשגיאה הבאה, השדה 'אימות' השם של מדיניות טענת הנכוֹנוּת (assertion) של SAML הוא Validate-SAML-Assertion-1.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. בדקו את ה-XML של מדיניות טענת הנכוֹנוּת (assertion) של 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> מוגדר ולא ריק.

כדי לתקן את המדיניות לדוגמה של 'אימות טענות נכונות' שמוצגת למעלה, צריך: יכול להוסיף את רכיבי <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

הודעת שגיאה

פריסה של שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או ניהול Edge ה-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> ריק או לא מצוין אימות מדיניות SAMLAssertion ולאחר מכן הפריסה של ה-API שרת ה-proxy נכשל. דרושה Trust Store חוקית.

אבחון

  1. לבחון את כל כללי המדיניות של אימות SAML במנגנון ה-Proxy ל-API שבו התרחש הכשל. אם קיים מודל אימות מדיניות טענת נכוֹנוּת (assertion) של 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> תמיד מצוין לא ריק בתוך המדיניות 'אימות טענת נכונות' של SAML. <TrustStore> השם צריך להיות תואם לשם של TrustStore חוקי שקיימים בכל הסביבות שבהן אתם מנסים לפרוס. שרת proxy.

כדי לתקן את הדוגמה שלמעלה, אפשר לציין את הערך <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

הודעת שגיאה

פריסה של שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או 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 ואז הפריסה של שרת ה-proxy ל-API נכשלה. נדרש שם חוקי של מאגר מפתחות.

אבחון

  1. לבחון את כל כללי המדיניות של Generate SAML Assertion ה-Proxy ל-API שבו התרחש הכשל. אם יש אפשרות של מדיניות טענת נכוֹנוּת (assertion) של SAML שבה רכיב הצאצא <Name> הוא ריק או לא צוין ברכיב <Keystore>, אז כאן את הגורם לשגיאה.

    למדיניות הבאה של הצהרת טענת נכוֹנוּת (assertion) של SAML יש צאצא ריק רכיב <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 המדיניות בנושא

כדי לתקן את הדוגמה שלמעלה, אפשר לציין את הרכיב <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

הודעת שגיאה

פריסה של שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או ניהול Edge ה-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> של מדיניות טענת הנכוֹנוּת (assertion) של SAML, ואז הפריסה של שרת ה-proxy ל-API נכשלה. נדרש כינוי חוקי של Keystore.

אבחון

  1. לבחון את כל כללי המדיניות של Generate SAML Assertion ה-Proxy ל-API שבו התרחש הכשל. אם יש אפשרות של מדיניות טענת נכוֹנוּת (assertion) של SAML שבה רכיב הצאצא <Alias> הוא ריק או לא צוין ברכיב <Keystore>, אז כאן את הגורם לשגיאה.

    למדיניות הבאה של הצהרת טענת נכוֹנוּת (assertion) של SAML יש צאצא ריק רכיב <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.

NullIssuer

הודעת שגיאה

פריסה של שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או ניהול Edge ה-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), גם אם הפריסה של שרת ה-proxy ל-API נכשלת. ערך תקין יש לציין ערך מסוג <Issuer>.

אבחון

  1. בדיקת כל כללי המדיניות של Generate SAML Assertion ב-API הספציפי שרת ה-proxy שבו התרחש הכשל. אם יש SAML יצירה של 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.