הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
המדיניות GenerateSAMLAssertion מאפשרת לשרתי proxy של API לצרף טענות 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
ללא קשר לסוג התוכן. |
||
Issuer |
המזהה הייחודי של ספק הזהויות. אם המאפיין האופציונלי
ref
קיים, הערך של Issuer יוקצה בזמן הריצה על סמך המשתנה שצוין. אם מאפיין ref האופציונלי לא קיים, המערכת תשתמש בערך של מאפיין המנפיק.
|
||
KeyStore |
השם של מאגר המפתחות שמכיל את המפתח הפרטי והכינוי של המפתח הפרטי שמשמש לחתימה דיגיטלית על טענות הנכונות (assertions) ב-SAML.
|
||
OutputVariable |
מציינים איפה ימוקם ה-SAML assertion שנוצר. אפשר לאחסן את הטענה במשתנה של תהליך או להוסיף אותה להודעה קיימת.
|
||
FlowVariable |
מציינים את השם של משתנה ה-Flow שבו יישמר התוכן של טענת ה-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, צריך ליצור טענת נכוֹנוּת (assertion) שכוללת את הערכים של הפרמטרים בעלים (subject) ו-המוסד המנפיק או את ההפניות שלהם. - חתימה על הטענה באמצעות המפתח שצוין.
- הוספת הטענה להודעה ב-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