מוצג המסמך של 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
עיבוד המדיניות:
- אם ההודעה אינה XML, ו-ignoreContentType לא מוגדר ל-
true
, אז ליצור טעות. - אם 'תבנית' מוגדרת, ולאחר מכן לעבד את התבנית כפי שמתואר במדיניות AssignMessage. אם חסרים משתנים והשדה ignoreUnresolvedVariables לא מוגדר, יש ליצור שגיאה.
- אם 'תבנית' לא מוגדרת, ואז תיבנה טענת נכוֹנוּת (assertion) שכוללת את הערכים של הפרמטרים של הנושא ושל המנפיק או ההפניות שלהם.
- חותמים על טענת הנכוֹנוּת (assertion) באמצעות המפתח שצוין.
- מוסיפים את טענת הנכוֹנוּת (assertion) להודעה ב-XPath שצוין.
אימות טענת נכוֹנוּת (assertion) של SAML
עיבוד המדיניות:
- המדיניות בודקת את ההודעה הנכנסת כדי לאמת שסוג המדיה של הבקשה הוא XML, על ידי
בדיקה אם סוג התוכן תואם לפורמטים
text/(.*+)?xml
אוapplication/(.*+)?xml
. אם סוג המדיה אינו XML המאפיין<IgnoreContentType>
לא מוגדר, אז המדיניות תיצור שגיאה. - המדיניות תנתח את ה-XML. אם הניתוח ייכשל, תהיה שגיאה.
- המדיניות תשלוף את הרכיב החתום ואת טענת הנכוֹנוּת (assertion) באמצעות ערכי ה-XPath התואמים
שצוין (
<SignedElementXPath>
ו-<AssertionXPath>
). אם אחד מהנתיבים האלה לא מחזיר רכיב, המדיניות תיצור שגיאה. - המדיניות תוודא שההצהרה זהה לרכיב החתום, או הוא צאצא של הרכיב החתום. אם זה לא נכון, המדיניות תיצור טעות.
- אם אחד מהמאפיינים
<NotBefore>
או<NotOnOrAfter>
נמצאים בטענת הנכוֹנוּת (assertion), המדיניות תבדוק את חותמת הזמן הנוכחית מול את הערכים האלה, כפי שמתואר בסעיף ליבה של SAML 2.5.1. - המדיניות תחיל את כל הכללים הנוספים לעיבוד ה'תנאים' כפי שמתואר בסעיף ליבה של SAML בסעיף 2.5.1.1.
- המדיניות תאמת את החתימה הדיגיטלית בפורמט 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> .
|
build |
TrustStoreNotConfigured |
אם הרכיב <TrustStore> ריק או לא מצוין
אימות מדיניות SAMLAssertion, הפריסה של שרת ה-proxy ל-API נכשלת.
דרושה Trust Store חוקית.
|
build |
NullKeyStoreAlias |
אם רכיב הצאצא <Alias> ריק או לא מצוין ברכיב <Keystore>
של יצירת מדיניות טענת נכוֹנוּת (assertion) של SAML, ואז הפריסה של ה-API
שרת ה-proxy נכשל. נדרש כינוי חוקי של Keystore.
|
build |
NullKeyStore |
אם רכיב הצאצא <Name> ריק או לא מצוין ברכיב <Keystore>
של מדיניות GenerateSAMLAssertion ואז הפריסה של ה-API
שרת ה-proxy נכשל. נדרש שם חוקי של מאגר מפתחות.
|
build |
NullIssuer |
אם הרכיב <Issuer> ריק או לא מצוין ב-Generate SAML
מדיניות טענת נכוֹנוּת (assertion), גם אם הפריסה של שרת ה-proxy ל-API נכשלת. א'
נדרש ערך <Issuer> חוקי.
|
build |
משתני כשל
המשתנים האלה מוגדרים כשמתרחשת שגיאה בסביבת זמן הריצה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.
משתנים | איפה | דוגמה |
---|---|---|
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>
נושאים קשורים
חילוץ משתנים: חילוץ משתנים מדיניות