คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล

อะไร
- การตรวจสอบสิทธิ์และการให้สิทธิ์ขาเข้า: ตรวจสอบการยืนยันสิทธิ์ SAML
นโยบาย
ประเภทนโยบาย SAML จะเปิดใช้พร็อกซี API เพื่อตรวจสอบการยืนยัน SAML ที่แนบกับ คำขอ SOAP ขาเข้า นโยบาย SAML จะตรวจสอบข้อความขาเข้าที่มี การยืนยัน SAML แบบลงชื่อแบบดิจิทัล ปฏิเสธการยืนยันหากไม่ถูกต้อง และกำหนดตัวแปรที่ อนุญาตนโยบายเพิ่มเติมหรือบริการแบ็กเอนด์เองเพื่อตรวจสอบความถูกต้องของข้อมูลต่อไป ในการยืนยัน - การสร้างโทเค็นขาออก: สร้างนโยบายการยืนยัน SAML
ประเภทนโยบาย SAML จะเปิดใช้พร็อกซี API เพื่อแนบการยืนยัน SAML กับคำขอ XML ขาออก จากนั้นการยืนยันดังกล่าวจะพร้อมใช้งานเพื่อเปิดใช้บริการแบ็กเอนด์เพื่อใช้การรักษาความปลอดภัยเพิ่มเติม การประมวลผลเพื่อตรวจสอบสิทธิ์และให้สิทธิ์
ตัวอย่าง
สร้างการยืนยัน 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>
กำลังสร้างการยืนยัน SAML
ตรวจสอบการยืนยัน 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>
กำลังตรวจสอบการยืนยันสิทธิ์ SAML
การอ้างอิงองค์ประกอบ
สร้างการยืนยัน SAML
ชื่อช่อง | คำอธิบาย | ||
---|---|---|---|
แอตทริบิวต์ name รายการ |
ชื่ออินสแตนซ์นโยบาย ชื่อต้องไม่ซ้ำกันใน
องค์กร อักขระที่คุณใช้ในชื่อได้ถูกจำกัดไว้เพียง A-Z0-9._\-$
% อย่างไรก็ตาม UI การจัดการบังคับใช้ข้อจำกัดเพิ่มเติม เช่น
นำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ |
||
แอตทริบิวต์ ignoreContentType รายการ |
บูลีนที่ตั้งค่าเป็น true หรือ false ได้ โดยค่าเริ่มต้น แอตทริบิวต์
การยืนยันจะไม่สร้างถ้าประเภทเนื้อหาของข้อความไม่ใช่ XML
ประเภทเนื้อหา หากตั้งค่าเป็น true ระบบจะถือว่าข้อความนั้นเป็น XML
โดยไม่คำนึงถึงประเภทเนื้อหา |
||
Issuer |
ตัวระบุที่ไม่ซ้ำกันของผู้ให้บริการข้อมูลประจำตัว หากตัวเลือก
ref
อยู่ ระบบจะกำหนดค่าของผู้ออกใบรับรองระหว่างรันไทม์ตาม
ตัวแปรที่ระบุ หากไม่มีแอตทริบิวต์ ref ที่ไม่บังคับ แอตทริบิวต์
จะใช้ค่าของ Issuer
|
||
KeyStore |
ชื่อของ KeyStore ที่มีคีย์ส่วนตัวและชื่อแทนของคีย์ส่วนตัว
ที่ใช้ลงนามการยืนยันผ่าน SAML แบบดิจิทัล
|
||
OutputVariable |
|||
FlowVariable |
|||
Message |
เป้าหมายของนโยบาย ค่าที่ถูกต้องคือ message , request
และ response เมื่อตั้งค่าเป็น message นโยบายจะมีเงื่อนไข
เรียกออบเจ็กต์ข้อความตามจุดไฟล์แนบของนโยบาย เมื่อแนบกับ
โฟลว์คำขอ นโยบายจะแปลง message เป็นคำขอ และเมื่อแนบกับ
โฟลว์การตอบกลับ นโยบายจะแปลง message เพื่อตอบกลับ |
||
XPath |
นิพจน์ XPath ที่ระบุองค์ประกอบในเอกสาร XML ขาออกที่ นโยบายจะแนบการยืนยันสิทธิ์ SAML | ||
SignatureAlgorithm |
SHA1 หรือ SHA256 | ||
Subject |
ตัวระบุที่ไม่ซ้ำกันของเรื่องของการยืนยัน SAML หากเลือก
มีค่า
ref อยู่ ดังนั้นค่าของ "เรื่อง" จะถูกกำหนดที่
ตามตัวแปรที่ระบุ หากแอตทริบิวต์ ref (ไม่บังคับ) คือ
ในปัจจุบัน จะมีการใช้ค่าของ Subject
|
||
Template |
หากมีการยืนยันจะสร้างขึ้นโดยการเรียกใช้เทมเพลตนี้ โดยแทนที่
ทุกอย่างจะแสดง
{} ด้วยตัวแปรที่เกี่ยวข้อง จากนั้นจึงแสดงแบบดิจิทัล
ลงชื่อในผลลัพธ์ ระบบจะประมวลผลเทมเพลตตามกฎนโยบาย AssignMessage
ดูมอบหมาย
นโยบายข้อความ
|
ตรวจสอบการยืนยัน SAML
ชื่อช่อง | คำอธิบาย |
---|---|
แอตทริบิวต์ name รายการ |
ชื่ออินสแตนซ์นโยบาย ชื่อต้องไม่ซ้ำกันในองค์กร
อักขระที่คุณใช้ในชื่อได้ถูกจำกัดไว้เพียง
A-Z0-9._\-$ %
อย่างไรก็ตาม UI การจัดการบังคับใช้ข้อจำกัดเพิ่มเติม เช่น โดยอัตโนมัติ
การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออก
|
แอตทริบิวต์ ignoreContentType รายการ |
บูลีนที่ตั้งค่าเป็น true หรือ false ได้ โดยค่าเริ่มต้น แอตทริบิวต์
การยืนยันจะไม่สร้างถ้าประเภทเนื้อหาของข้อความไม่ใช่ XML
ประเภทเนื้อหา หากตั้งค่าเป็น true ระบบจะถือว่าข้อความเป็น XML
โดยไม่คำนึงถึงประเภทเนื้อหา |
Source |
เป้าหมายของนโยบาย ค่าที่ถูกต้องคือ message , request
และ response เมื่อตั้งค่าเป็น message นโยบายจะมีเงื่อนไข
เรียกออบเจ็กต์ข้อความตามจุดไฟล์แนบของนโยบาย เมื่อแนบกับ
โฟลว์คำขอ นโยบายจะแปลง message เป็นคำขอ และเมื่อแนบกับ
โฟลว์การตอบกลับ นโยบายจะแปลง message เพื่อตอบกลับ |
XPath |
เลิกใช้งานแล้ว ผู้เผยแพร่โฆษณาย่อยของ
Source ใช้
AssertionXPath และ SignedElementXPath
|
AssertionXPath |
ผู้เผยแพร่โฆษณาย่อยของ
Source นิพจน์ XPath ที่ระบุองค์ประกอบใน
เอกสาร XML ขาเข้าที่นโยบายสามารถดึงการยืนยันสิทธิ์ SAML ได้
|
SignedElementXPath |
ผู้เผยแพร่โฆษณาย่อยของ
Source นิพจน์ XPath ที่ระบุองค์ประกอบใน
เอกสาร XML ขาเข้าที่นโยบายสามารถดึงองค์ประกอบที่ลงนามแล้วได้ ช่วงเวลานี้
อาจแตกต่างหรือเหมือนกับ XPath สำหรับ AssertionXPath
|
TrustStore |
ชื่อของ TrustStore ที่มีใบรับรอง X.509 ที่เชื่อถือได้ที่ใช้เพื่อตรวจสอบ
ลายเซ็นดิจิทัลในการยืนยันสิทธิ์ SAML
|
RemoveAssertion |
บูลีนที่ตั้งค่าเป็น
true หรือ false ได้ วันและเวลา
true การยืนยัน SAML จะถูกนำออกจากข้อความคำขอก่อน
ระบบจะส่งต่อข้อความไปยังบริการแบ็กเอนด์
|
หมายเหตุการใช้งาน
ข้อกำหนดของภาษามาร์กอัปเพื่อยืนยันความปลอดภัย (SAML) จะกำหนดรูปแบบและโปรโตคอลที่ จะช่วยให้แอปพลิเคชันแลกเปลี่ยนข้อมูลในรูปแบบ XML เพื่อการตรวจสอบสิทธิ์และ การกันวงเงิน
"การยืนยันความปลอดภัย" เป็นโทเค็นที่เชื่อถือได้ซึ่งอธิบายแอตทริบิวต์ของแอป ผู้ใช้แอป หรือผู้เข้าร่วมรายอื่นในธุรกรรม มีการจัดการและใช้งานการยืนยันการรักษาความปลอดภัย ประเภทเอนทิตี
- ผู้ให้บริการข้อมูลประจำตัว: ยืนยันความปลอดภัยในนามของผู้เข้าร่วม
- ผู้ให้บริการ: ตรวจสอบการยืนยันความปลอดภัยผ่านความสัมพันธ์ที่เชื่อถือได้กับข้อมูลประจำตัว ผู้ให้บริการ
แพลตฟอร์ม API สามารถทำหน้าที่เป็นผู้ให้บริการข้อมูลประจำตัวและในฐานะผู้ให้บริการ ทำหน้าที่เป็น สร้างการยืนยันและแนบไฟล์ไปเพื่อขอข้อความ ซึ่งทำให้ การยืนยันที่พร้อมสำหรับการประมวลผลโดยบริการแบ็กเอนด์ ทำหน้าที่เป็นผู้ให้บริการโดย กำลังตรวจสอบการยืนยันข้อความของคำขอขาเข้า
ประเภทนโยบาย SAML รองรับการยืนยัน SAML ที่ตรงกับ SAML Core เวอร์ชัน 2.0 ข้อมูลจำเพาะของโปรไฟล์โทเค็น SAML ของ WS-Security เวอร์ชัน 1.0
สร้างการยืนยัน SAML
การประมวลผลนโยบาย:
- ถ้าข้อความไม่ใช่ XML และ ExcludeContentType ไม่ได้ตั้งค่าเป็น
true
จะทำให้ ทำความผิด - หากเป็น "เทมเพลต" แล้วประมวลผลเทมเพลตตามที่อธิบายไว้สำหรับนโยบาย AssignMessage หากไม่มีตัวแปรใดๆ และไม่ได้ตั้งค่า ignoreUnresolvedVariable ให้แสดงผลข้อผิดพลาด
- หากเป็น "เทมเพลต" ไม่ได้กำหนด แล้วสร้างการยืนยันที่มีค่าของ พารามิเตอร์เรื่องและผู้ออกบัตรหรือข้อมูลอ้างอิง
- ลงนามการยืนยันโดยใช้คีย์ที่ระบุ
- เพิ่มการยืนยันไปยังข้อความที่ XPath ที่ระบุ
ตรวจสอบการยืนยัน SAML
การประมวลผลนโยบาย:
- นโยบายนี้จะตรวจสอบข้อความขาเข้าเพื่อยืนยันว่าประเภทสื่อของคำขอเป็น XML
กำลังตรวจสอบว่าประเภทเนื้อหาตรงกับรูปแบบ
text/(.*+)?xml
หรือapplication/(.*+)?xml
หากประเภทสื่อไม่ใช่ XML และ ไม่ได้ตั้งค่า<IgnoreContentType>
นโยบายจะส่งผลให้เกิดข้อผิดพลาด - นโยบายจะแยกวิเคราะห์ XML หากการแยกวิเคราะห์ไม่สำเร็จ จะเกิดข้อผิดพลาดขึ้น
- นโยบายจะดึงองค์ประกอบที่ลงนามและการยืนยันโดยใช้ XPath ที่เกี่ยวข้อง
ที่ระบุ (
<SignedElementXPath>
และ<AssertionXPath>
) หากเส้นทางใดเส้นทางหนึ่งเหล่านี้ไม่แสดงผลองค์ประกอบ นโยบายจะส่งผลให้เกิดข้อผิดพลาด - นโยบายจะยืนยันว่าการยืนยันนั้นเหมือนกับองค์ประกอบที่ลงนาม หรือ เป็นองค์ประกอบย่อยขององค์ประกอบที่ลงชื่อเข้าใช้ หากไม่เป็นความจริง นโยบายจะตัดสินความผิด
- หาก
<NotBefore>
หรือ<NotOnOrAfter>
อย่างใดอย่างหนึ่ง ปรากฏอยู่ในการยืนยัน นโยบายจะตรวจสอบการประทับเวลาปัจจุบันกับ ค่าเหล่านี้ตามที่อธิบายไว้ในส่วน SAML Core 2.5.1 - นโยบายจะใช้กฎเพิ่มเติมสำหรับการประมวลผล "เงื่อนไข" ตามที่อธิบายไว้ ในส่วน SAML Core 2.5.1.1
- นโยบายจะตรวจสอบลายเซ็นดิจิทัล XML โดยใช้ค่าของ
<TrustStore>
และ<ValidateSigner>
ตามที่อธิบายไว้ข้างต้น หากตรวจสอบไม่สำเร็จ นโยบายจะส่งผลให้เกิดข้อผิดพลาด
เมื่อนโยบายเสร็จสิ้นโดยไม่มีการแจ้งความผิด นักพัฒนาซอฟต์แวร์ของพร็อกซีจะมั่นใจว่า ดังต่อไปนี้
- ลายเซ็นดิจิทัลในการยืนยันถูกต้อง และลงนามโดย CA ที่เชื่อถือได้
- การยืนยันนี้ใช้ได้สำหรับระยะเวลาปัจจุบัน
- ระบบจะดึงข้อมูลเรื่องและผู้ออกการยืนยันและตั้งค่าในตัวแปรโฟลว์ ใช่เลย ความรับผิดชอบของนโยบายอื่นๆ ในการใช้ค่าเหล่านี้ในการตรวจสอบสิทธิ์เพิ่มเติม เช่น ตรวจสอบว่าชื่อเรื่องถูกต้องหรือส่งไปยังระบบเป้าหมายเพื่อตรวจสอบความถูกต้อง
ระบบอาจใช้นโยบายอื่นๆ เช่น ExtractVariable เพื่อแยกวิเคราะห์ XML ดิบของการยืนยัน เพื่อการตรวจสอบที่ซับซ้อนมากขึ้น
ตัวแปรโฟลว์
มีข้อมูลหลายอย่างที่อาจระบุในการยืนยันสิทธิ์ SAML ได้ SAML การยืนยันเองเป็น XML ที่แยกวิเคราะห์ได้โดยใช้นโยบาย ExtractVariable และ เพื่อทำการตรวจสอบที่ซับซ้อนยิ่งขึ้น
ตัวแปร | คำอธิบาย |
---|---|
saml.id |
รหัสการยืนยัน SAML |
saml.issuer |
"ผู้ออก" ของการยืนยัน ซึ่งแปลงจากประเภท XML ดั้งเดิมเป็นสตริง |
saml.subject |
"เรื่อง" ของการยืนยัน ซึ่งแปลงจากประเภท XML ดั้งเดิมเป็นสตริง |
saml.valid |
ส่งคืนค่า "จริง" หรือ "เท็จ" ตามผลลัพธ์ของการตรวจสอบความถูกต้อง |
saml.issueInstant |
IssueInstant |
saml.subjectFormat |
รูปแบบของหัวเรื่อง |
saml.scmethod |
วิธีการยืนยันหัวเรื่อง |
saml.scdaddress |
ที่อยู่ข้อมูลการยืนยันหัวเรื่อง |
saml.scdinresponse |
ข้อมูลการยืนยันหัวเรื่องในคำตอบ |
saml.scdrcpt |
ผู้รับข้อมูลการยืนยันเรื่อง |
saml.authnSnooa |
AuthnStatement SessionNotOnOrAfter |
saml.authnContextClassRef |
AuthnStatement AuthnContextClassRef |
saml.authnInstant |
การตรวจสอบสิทธิ์ทันที |
saml.authnSessionIndex |
ดัชนีเซสชัน AuthnStatement |
ข้อมูลอ้างอิงข้อผิดพลาด
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
SourceNotConfigured |
One or more of the following elements of the Validate SAML Assertion
policy is not defined or empty: <Source> , <XPath> ,
<Namespaces> , <Namespace> .
|
build |
TrustStoreNotConfigured |
If the <TrustStore> element is empty or not specified in the
ValidateSAMLAssertion policy, then the deployment of the API proxy fails.
A valid Trust Store is required.
|
build |
NullKeyStoreAlias |
If the child element <Alias> is empty or not specified in the <Keystore>
element of Generate SAML Assertion policy, then the deployment of the API
proxy fails. A valid Keystore alias is required.
|
build |
NullKeyStore |
If the child element <Name> is empty or not specified in the <Keystore>
element of GenerateSAMLAssertion policy, then the deployment of the API
proxy fails. A valid Keystore name is required.
|
build |
NullIssuer |
If the <Issuer> element is empty or not specified in the Generate SAML
Assertion policy, then the deployment of the API proxy fails. A
valid <Issuer> value is required.
|
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault. The fault name is the last part of the fault code. | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
For a validate SAML assertion policy configuration, the error prefix is
ValidateSAMLAssertion . |
GenerateSAMLAssertion.failed = true |
Example error response
{ "fault": { "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type", "detail": { "errorcode": "steps.saml.generate.InvalidMediaTpe" } } }
Example fault rule
<FaultRules> <FaultRule name="invalid_saml_rule"> <Step> <Name>invalid-saml</Name> </Step> <Condition>(GenerateSAMLAssertion.failed = "true")</Condition> </FaultRule> </FaultRules>
หัวข้อที่เกี่ยวข้อง
ตัวแปรการแตกข้อมูล: ตัวแปรการดึงข้อมูล นโยบาย