מדיניות SAMLAssertion

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

מה

  • אימות והרשאה של הודעות נכנסות: אימות טענת נכוֹנוּת (assertion) של SAML מדיניות
    סוג המדיניות של SAML מאפשר לשרתי proxy ל-API לאמת טענות נכונות (assertions) של SAML שמצורפות אל בקשות SOAP נכנסות. מדיניות SAML מאמתת הודעות נכנסות שמכילות טענת נכוֹנוּת (assertion) של SAML בחתימה דיגיטלית, דוחה אותן אם הן לא תקינות ומגדיר משתנים מדיניות נוספת, או השירותים לקצה העורפי עצמם, כדי לאמת את המידע בטענת הנכוֹנוּת (assertion).
  • יצירה של אסימון יוצא: יצירת מדיניות טענת נכוֹנוּת (assertion) של SAML
    סוג המדיניות של SAML מאפשר לשרתי proxy ל-API לצרף טענות נכונות (assertions) של SAML לבקשות XML יוצאות. לאחר מכן הטענות הנכונות (assertions) האלה זמינות כדי לאפשר לשירותים לקצה העורפי להחיל שכבת אבטחה נוספת לצורך אימות והרשאה.

דוגמאות

יצירת טענת נכוֹנוּת (assertion) של SAML

<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>

יצירה של טענת נכוֹנוּת (assertion) של SAML

אימות טענת נכוֹנוּת (assertion) של SAML

<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>
    <AssertionXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</AssertionXPath>
    <SignedElementXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</SignedElementXPath>
  </Source>
  <TrustStore>TrustStoreName</TrustStore>
  <RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

אימות טענת נכוֹנוּת (assertion) של SAML


הפניה לרכיב

יצירת טענת נכוֹנוּת (assertion) של SAML

שם השדה תיאור
מאפיין אחד (name) שם המופע של המדיניות. השם חייב להיות ייחודי ב של הארגון. התווים שבהם ניתן להשתמש בשם מוגבלות ל: A-Z0-9._\-$ %. אבל ממשק המשתמש לניהול אוכף הגבלות נוספות, כמו תסיר באופן אוטומטי תווים שאינם אלפאנומריים.
מאפיין אחד (ignoreContentType) ערך בוליאני שאפשר להגדיר ל-true או ל-false. כברירת מחדל, טענת נכוֹנוּת (assertion) לא תיווצר אם סוג התוכן של ההודעה הוא לא XML סוג התוכן. אם הוא מוגדר ל-true, ההודעה תטופל כ-XML ללא קשר לסוג התוכן.
Issuer
המזהה הייחודי של ספק הזהויות. אם הערכים האופציונליים של ref קיים, הערך של המנפיק יוקצה בזמן הריצה על סמך שצוין. אם המאפיין האופציונלי ref לא קיים, אז ייעשה שימוש בערך של המנפיק.
KeyStore
השם של KeyStore שמכיל את המפתח הפרטי ואת הכינוי של המפתח הפרטי שמשמשות לחתימה דיגיטלית על טענות נכונות (assertions) של SAML.
OutputVariable
FlowVariable
Message יעד המדיניות. הערכים החוקיים הם message, request, ו-response. כשהמדיניות מוגדרת לערך message, המדיניות מותנית מאחזרת את אובייקט ההודעה על סמך נקודת הקובץ המצורף של המדיניות. כשמחובר אל בתהליך הבקשה, המדיניות מגדירה את ההפניות ל-message לבקשה, וכשהיא מצורפת אל רצף התשובות, המדיניות מזהה את הערך message לתגובה.
XPath ביטוי XPath שמציין את הרכיב במסמך ה-XML היוצא שאליו המדיניות תצרף את טענת הנכוֹנוּת (assertion) של SAML.
SignatureAlgorithm SHA1 או SHA256
Subject
המזהה הייחודי של נושא טענת הנכונות (assertion) של SAML. אם הערכים האופציונליים מאפיין ref קיים, ולאחר מכן הערך של הנושא יוקצה ב על סמך המשתנה שצוין. אם המאפיין האופציונלי ref הוא קיים, המערכת תשתמש בערך של Subject.
Template
אם קיימת, טענת הנכוֹנוּת (assertion) תיווצר על ידי הרצת התבנית הזו, כל מה שמסומן כ-{} במשתנה התואם, ואז באופן דיגיטלי על התוצאה. התבנית מעובדת בהתאם לכללי המדיניות של AssignMessage. ראו הקצאה מדיניות ההודעות.

אימות טענת נכוֹנוּת (assertion) של SAML

שם השדה תיאור
מאפיין אחד (name)
שם המופע של המדיניות. השם חייב להיות ייחודי בארגון. התווים שבהם ניתן להשתמש בשם מוגבלות ל: A-Z0-9._\-$ %. עם זאת, ממשק המשתמש לניהול אוכף הגבלות נוספות, כמו למשל באופן אוטומטי להסיר תווים שאינם אלפאנומריים.
מאפיין אחד (ignoreContentType) ערך בוליאני שאפשר להגדיר ל-true או ל-false. כברירת מחדל, טענת נכוֹנוּת (assertion) לא תיווצר אם סוג התוכן של ההודעה הוא לא XML סוג התוכן. אם היא מוגדרת לערך true, ההודעה תטופל כ-XML. ללא קשר לסוג התוכן.
Source יעד המדיניות. הערכים החוקיים הם message, request, ו-response. כשהמדיניות מוגדרת לערך message, המדיניות מותנית מאחזרת את אובייקט ההודעה על סמך נקודת הקובץ המצורף של המדיניות. כשמחובר אל בתהליך הבקשה, המדיניות מגדירה את ההפניות ל-message לבקשה, וכשהיא מצורפת אל רצף התשובות, המדיניות מזהה את הערך message לתגובה.
XPath
הוצא משימוש. צאצא של Source. כדאי להשתמש AssertionXPath וגם SignedElementXPath
AssertionXPath
צאצא של Source. ביטוי XPath שמציין את הרכיב מסמך XML נכנס שממנו המדיניות יכולה לחלץ את טענת הנכונות (assertion) של SAML.
SignedElementXPath
צאצא של Source. ביטוי XPath שמציין את הרכיב מסמך XML נכנס שממנו המדיניות יכולה לחלץ את הרכיב החתום. הזה יכול להיות שונה או זהה ל-XPath של AssertionXPath.
TrustStore
השם של TrustStore שמכיל אישורי X.509 מהימנים שמשמשים לאימות חתימות דיגיטליות בטענות נכונות (assertions) של SAML.
RemoveAssertion
ערך בוליאני שאפשר להגדיר ל-true או ל-false. מתי true, טענת הנכוֹנוּת (assertion) של SAML תוסר מהודעת הבקשה לפני ההודעה תועבר לשירות לקצה העורפי.

הערות שימוש

במפרט Security Assertion Markup Language (SAML) מוגדר פורמטים ופרוטוקולים שמאפשרות לאפליקציות לשלוח ולקבל מידע בפורמט XML לצורך אימות אישור.

'טענת אבטחה' אסימון מהימן שמתאר מאפיין של אפליקציה, משתמש באפליקציה, או משתתף אחר בעסקה. טענות נכונות (assertions) של אבטחה מנוהלות וצרכות על ידי סוגי ישויות:

  • ספקי זהויות: יצירת טענות נכונות (assertions) של אבטחה בשם המשתתפים
  • ספקי שירות: אימות טענות נכונות (assertions) של אבטחה באמצעות קשרים מהימנים עם זהות ספקים

פלטפורמת ה-API יכולה לשמש כספק זהויות וגם כספק שירות. הוא משמש באמצעות יצירת טענות נכונות וצירוף שלהן כדי לבקש הודעות, וכך טענות נכוֹנוּת (assertion) שזמינות לעיבוד על ידי שירותים לקצה העורפי. הוא משמש כספק שירות אימות טענות נכונות (assertions) בהודעות בקשה נכנסות.

סוג המדיניות של SAML תומך בטענות נכונות (assertions) של SAML שתואמות לגרסה 2.0 של ליבת SAML מפרט וגרסה 1.0 של מפרט WS-Security SAML Token Profile.

יצירת טענת נכוֹנוּת (assertion) של SAML

עיבוד המדיניות:

  1. אם ההודעה אינה XML, ו-ignoreContentType לא מוגדר ל-true, אז ליצור טעות.
  2. אם 'תבנית' מוגדרת, ולאחר מכן לעבד את התבנית כפי שמתואר במדיניות AssignMessage. אם חסרים משתנים והשדה ignoreUnresolvedVariables לא מוגדר, יש ליצור שגיאה.
  3. אם 'תבנית' לא מוגדרת, ואז תיבנה טענת נכוֹנוּת (assertion) שכוללת את הערכים של הפרמטרים של הנושא ושל המנפיק או ההפניות שלהם.
  4. חותמים על טענת הנכוֹנוּת (assertion) באמצעות המפתח שצוין.
  5. מוסיפים את טענת הנכוֹנוּת (assertion) להודעה ב-XPath שצוין.

אימות טענת נכוֹנוּת (assertion) של SAML

עיבוד המדיניות:

  1. המדיניות בודקת את ההודעה הנכנסת כדי לאמת שסוג המדיה של הבקשה הוא XML, על ידי בדיקה אם סוג התוכן תואם לפורמטים text/(.*+)?xml או application/(.*+)?xml. אם סוג המדיה אינו XML המאפיין <IgnoreContentType> לא מוגדר, אז המדיניות תיצור שגיאה.
  2. המדיניות תנתח את ה-XML. אם הניתוח ייכשל, תהיה שגיאה.
  3. המדיניות תשלוף את הרכיב החתום ואת טענת הנכוֹנוּת (assertion) באמצעות ערכי ה-XPath התואמים שצוין (<SignedElementXPath> ו-<AssertionXPath>). אם אחד מהנתיבים האלה לא מחזיר רכיב, המדיניות תיצור שגיאה.
  4. המדיניות תוודא שההצהרה זהה לרכיב החתום, או הוא צאצא של הרכיב החתום. אם זה לא נכון, המדיניות תיצור טעות.
  5. אם אחד מהמאפיינים <NotBefore> או <NotOnOrAfter> נמצאים בטענת הנכוֹנוּת (assertion), המדיניות תבדוק את חותמת הזמן הנוכחית מול את הערכים האלה, כפי שמתואר בסעיף ליבה של SAML 2.5.1.
  6. המדיניות תחיל את כל הכללים הנוספים לעיבוד ה'תנאים' כפי שמתואר בסעיף ליבה של SAML בסעיף 2.5.1.1.
  7. המדיניות תאמת את החתימה הדיגיטלית בפורמט XML, באמצעות הערכים של: <TrustStore> ו-<ValidateSigner> כמו שמתואר למעלה. אם האימות נכשל, המדיניות תיצור שגיאה.

לאחר השלמת המדיניות ללא דיווח על תקלה, המפתח של שרת ה-proxy יכול להיות בטוח הבאים:

  • החתימה הדיגיטלית בטענת הנכוֹנוּת (assertion) תקינה ונחתמה על ידי רשות אישורים מהימנה
  • טענת הנכוֹנוּת (assertion) תקפה לתקופה הנוכחית
  • הנושא והמנפיק של טענת הנכוֹנוּת (assertion) יחולצו ויוגדרו במשתני הזרימה. זה כן אחריות שכללי מדיניות אחרים להשתמש בערכים האלה לצורך אימות נוסף, כמו בדיקה ששם הנושא תקין או העברה שלו למערכת יעד לאימות.

אפשר להשתמש בכללי מדיניות אחרים, כמו CSVVariables, כדי לנתח את ה-XML הגולמי של טענת הנכוֹנוּת (assertion) לאימות מורכב יותר.


משתני זרימה

יש הרבה פרטים שניתן לציין בטענת נכונות (assertion) של SAML. SAML טענת הנכוֹנוּת (assertion) עצמה היא XML שאפשר לנתח באמצעות המדיניות generateVariables מנגנונים כדי לבצע אימותים מורכבים יותר.

משתנה תיאור
saml.id מזהה טענת נכוֹנוּת (assertion) של SAML
saml.issuer שם המפרסם של טענת הנכוֹנוּת (assertion), מומרים מסוג ה-XML המקורי למחרוזת
saml.subject ה'נושא' של טענת הנכוֹנוּת (assertion), מומרים מסוג ה-XML המקורי למחרוזת
saml.valid פונקציה זו מחזירה את הערך true או false על סמך התוצאה של בדיקת התקינות
saml.issueInstant IssueInstant
saml.subjectFormat פורמט הנושא
saml.scmethod שיטת האישור של הנושא
saml.scdaddress כתובת הנתונים לאישור נושא
saml.scdinresponse נתוני אישור של נושא הבקשה בתגובה
saml.scdrcpt נמען נתוני האישור של האדם שאליו מתייחס המידע
saml.authnSnooa סשן של אימות AuthNotOnOrAfter
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement AuthInstant
saml.authnSessionIndex אינדקס סשנים של אימות

התייחסות לשגיאות

בקטע הזה מתוארים קודי התקלה והודעות השגיאה שהוחזרו ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בתקלות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.

שגיאות פריסה

השגיאות האלו עשויות להתרחש כאשר פורסים שרת proxy שמכיל את המדיניות הזו.

שם השגיאה סיבה תיקון
SourceNotConfigured אחד או יותר מהרכיבים הבאים בהצהרה של אימות SAML המדיניות לא מוגדרת או ריקה: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured אם הרכיב <TrustStore> ריק או לא מצוין אימות מדיניות SAMLAssertion, הפריסה של שרת ה-proxy ל-API נכשלת. דרושה Trust Store חוקית.
NullKeyStoreAlias אם רכיב הצאצא <Alias> ריק או לא מצוין ברכיב <Keystore> של יצירת מדיניות טענת נכוֹנוּת (assertion) של SAML, ואז הפריסה של ה-API שרת ה-proxy נכשל. נדרש כינוי חוקי של Keystore.
NullKeyStore אם רכיב הצאצא <Name> ריק או לא מצוין ברכיב <Keystore> של מדיניות GenerateSAMLAssertion ואז הפריסה של ה-API שרת ה-proxy נכשל. נדרש שם חוקי של מאגר מפתחות.
NullIssuer אם הרכיב <Issuer> ריק או לא מצוין ב-Generate SAML מדיניות טענת נכוֹנוּת (assertion), גם אם הפריסה של שרת ה-proxy ל-API נכשלת. א' נדרש ערך <Issuer> חוקי.

משתני כשל

המשתנים האלה מוגדרים כשמתרחשת שגיאה בסביבת זמן הריצה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.

משתנים איפה דוגמה
fault.name="fault_name" fault_name הוא שם השגיאה. שם השגיאה הוא החלק האחרון בקוד השגיאה. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed בשביל הגדרה של מדיניות אימות של טענת נכוֹנוּת (assertion) של SAML, קידומת השגיאה היא ValidateSAMLAssertion GenerateSAMLAssertion.failed = true

דוגמה לתגובת שגיאה

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

דוגמה לכלל שגוי

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

נושאים קשורים

חילוץ משתנים: חילוץ משתנים מדיניות