הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
המדיניות GenerateSAMLAssertion מאפשרת ל-API proxy לצרף טענות נכונות (assertions) של SAML לבקשות XML יוצאות. הטענות האלה זמינות לשירותי קצה עורפי כדי להחיל עיבוד אבטחה נוסף לאימות ולהרשאה. מידע נוסף זמין במאמר סקירה כללית של מדיניות SAML.
המדיניות הזו היא מדיניות שניתנת להרחבה, והשימוש בה עשוי להשפיע על העלויות או על הניצול, בהתאם לרישיון Apigee שלכם. מידע על סוגי המדיניות וההשלכות של השימוש זמין במאמר סוגי מדיניות.
דוגמאות
<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="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> </Namespaces> <XPath>/soap:Envelope/soap:Header/wsse:Security</XPath> </Message> </OutputVariable> <SignatureAlgorithm /> <Subject ref="reference">Subject name</Subject> <Template ignoreUnresolvedVariables="false"> <!-- A lot of XML goes here, within CDATA, with {} around each variable --> </Template> </GenerateSAMLAssertion>
הפניה לרכיב
בקטע הזה מפורטים הרכיבים והמאפיינים של מדיניות GenerateSAMLAssertion.
מאפיינים שחלים על הרכיב ברמה העליונה
<GenerateSAMLAssertion name="SAML-A1" continueOnError="false" enabled="true" async="false">
המאפיינים הבאים משותפים לכל רכיבי ההורה של המדיניות.
| מאפיין | תיאור | ברירת מחדל | נוכחות |
|---|---|---|---|
| name |
השם הפנימי של המדיניות. התווים שאפשר להשתמש בהם בשם מוגבלים ל:
A-Z0-9._\-$ %. עם זאת, בממשק המשתמש של Apigee יש הגבלות נוספות, כמו הסרה אוטומטית של תווים שהם לא אלפאנומריים.
אופציונלי. אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
| מופעל |
כדי לאכוף את המדיניות, צריך להגדיר את הערך true.
מגדירים את הערך |
TRUE | אופציונלי |
רכיבים ומאפיינים ליצירת טענות נכוֹנוּת (assertion) של SAML
| שם השדה | תיאור | ||
|---|---|---|---|
מאפיין ignoreContentType |
ערך בוליאני שאפשר להגדיר כ-true או כ-false. כברירת מחדל, הטענה לא תיווצר אם סוג התוכן של ההודעה הוא לא סוג תוכן XML. אם הערך הוא true, המערכת תתייחס להודעה כאל XML
בלי קשר ל-Content-type. |
||
Issuer |
המזהה הייחודי של ספק הזהויות. אם המאפיין האופציונלי
ref
קיים, הערך של Issuer יוקצה בזמן הריצה על סמך המשתנה שצוין. אם מאפיין ref האופציונלי לא קיים, המערכת תשתמש בערך של מאפיין המנפיק.
|
||
KeyStore |
השם של מאגר המפתחות שמכיל את המפתח הפרטי והכינוי של המפתח הפרטי שמשמש לחתימה דיגיטלית על טענות הנכונות (assertions) ב-SAML.
|
||
OutputVariable |
מציינים איפה ימוקם ה-SAML assertion שנוצר. אפשר לשמור את הטענה במשתנה של תהליך או להוסיף אותה להודעה קיימת.
|
||
FlowVariable |
מציינים את השם של משתנה זרימה שבו יישמר התוכן של טענת ה-SAML שנוצרה.
זוהי חלופה לשימוש ברכיב
<Message> כדי להוסיף את הטענה להודעת XML קיימת.
|
||
Message |
היעד של המדיניות. הערכים התקפים הם message, request ו-response. כשהמדיניות מוגדרת ל-message, היא מאחזרת את אובייקט ההודעה באופן מותנה על סמך נקודת ההצמדה של המדיניות. כשהמדיניות מצורפת לרצף הפעולות של הבקשה, הערך של message הוא request, וכשהיא מצורפת לרצף הפעולות של התגובה, הערך של message הוא response. |
||
XPath |
ביטוי XPath שמציין את הרכיב במסמך ה-XML היוצא שאליו המדיניות תצרף את הצהרת ה-SAML. | ||
SignatureAlgorithm |
SHA1 או SHA256 | ||
Subject |
המזהה הייחודי של הנושא של הצהרת ה-SAML. אם המאפיין האופציונלי
ref מופיע, הערך של Subject יוקצה בזמן הריצה על סמך המשתנה שצוין. אם לא מציינים את מאפיין ref האופציונלי, המערכת תשתמש בערך של מאפיין הנושא.
|
||
Template |
אם הוא קיים, הטענה תיווצר על ידי הפעלת התבנית הזו, החלפת כל מה שמסומן ב-
{} במשתנה המתאים, ולאחר מכן חתימה דיגיטלית על התוצאה. התבנית מעובדת לפי כללי המדיניות של AssignMessage.
מידע על מדיניות AssignMessage
|
||
הערות שימוש
עיבוד המדיניות:
- אם ההודעה היא לא XML, והערך של
ignoreContentTypeהוא לאtrue, אז מועלית שגיאה. - אם המדיניות
Templateמוגדרת, התבנית תעובד כמו שמתואר במדיניות AssignMessage. אם חסרים משתנים והמאפייןignoreUnresolvedVariablesלא מוגדר, תופעל שגיאה. - אם לא מוגדר
Template, צריך ליצור טענה שכוללת את הערכים של הפרמטרים Subject ו-Issuer או את ההפניות שלהם. - חתימה על הטענה באמצעות המפתח שצוין.
- הוספת הטענה להודעה ב-XPath שצוין.
הפניה לשגיאה
בקטע הזה מתוארים קודי התקלה והודעות השגיאה שמוחזרים, ומשתני התקלה שמוגדרים על ידי Apigee כשמדיניות כזו מפעילה שגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי תקלות לטיפול בתקלות. מידע נוסף על שגיאות שקשורות למדיניות ועל טיפול בשגיאות
שגיאות בהטמעה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שמכיל את המדיניות הזו.
| שם השגיאה | מטרה | תיקון |
|---|---|---|
SourceNotConfigured |
אחד או יותר מהרכיבים הבאים של המדיניות ValidateSAMLAssertion
לא מוגדרים או ריקים: <Source>, <XPath>, <Namespaces>, <Namespace>.
|
build |
TrustStoreNotConfigured |
אם הרכיב <TrustStore> ריק או לא מצוין במדיניות ValidateSAMLAssertion, פריסת proxy ל-API תיכשל.
חובה להשתמש בחנות מהימנה תקינה.
|
build |
NullKeyStoreAlias |
אם אלמנט הצאצא <Alias> ריק או לא מצוין באלמנט <Keystore>
של מדיניות GenerateSAMLAssertion, פריסת שרת ה-proxy של ה-API תיכשל. חובה להזין כינוי תקין למאגר המפתחות.
|
build |
NullKeyStore |
אם אלמנט הצאצא <Name> ריק או לא מצוין באלמנט <Keystore>
של מדיניות GenerateSAMLAssertion, פריסת שרת ה-proxy של ה-API תיכשל. חובה להזין שם תקין של מאגר מפתחות.
|
build |
NullIssuer |
אם הרכיב <Issuer> ריק או לא מצוין במדיניות GenerateSAMLAssertion, פריסת proxy ל-API תיכשל. חובה לציין ערך <Issuer> תקין.
|
build |
משתני תקלות
המשתנים האלה מוגדרים כשמתרחשת שגיאת זמן ריצה. מידע נוסף על שגיאות שקשורות למדיניות
| משתנים | כאשר: | דוגמה |
|---|---|---|
fault.name="fault_name" |
fault_name הוא שם התקלה. שם התקלה הוא החלק האחרון של קוד התקלה. | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
בהגדרת מדיניות של אימות טענת נכוֹנוּת של 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>נושאים קשורים
חילוץ משתנים: Extract Variables policy