คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
- การตรวจสอบสิทธิ์และการให้สิทธิ์ขาเข้า: ตรวจสอบการยืนยัน SAML
policy
ประเภทนโยบาย 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
ไม่ว่า Content-type จะเป็นอะไรก็ตาม |
||
Issuer |
ตัวระบุที่ไม่ซ้ำกันของผู้ให้บริการข้อมูลประจำตัว หากมีแอตทริบิวต์
ref
ที่ไม่บังคับ ระบบจะกำหนดค่าของผู้ออกที่รันไทม์ตามตัวแปรที่
ระบุ หากไม่มีแอตทริบิวต์ ref ที่ไม่บังคับ ระบบจะใช้ค่าของผู้ออกใบรับรอง
|
||
KeyStore |
ชื่อของ KeyStore ที่มีคีย์ส่วนตัวและชื่อแทนของคีย์ส่วนตัว
ที่ใช้ในการลงนามการยืนยัน SAML แบบดิจิทัล
|
||
OutputVariable |
|||
FlowVariable |
|||
Message |
เป้าหมายของนโยบาย ค่าที่ใช้ได้คือ message, request
และ response เมื่อตั้งค่าเป็น message นโยบายจะเรียกข้อมูลออบเจ็กต์ข้อความตามจุดแนบของนโยบายแบบมีเงื่อนไข
เมื่อแนบไปกับโฟลว์คำขอ นโยบายจะเปลี่ยน message เป็นคำขอ และเมื่อแนบไปกับโฟลว์การตอบกลับ นโยบายจะเปลี่ยน message เป็นการตอบกลับ |
||
XPath |
นิพจน์ XPath ที่ระบุองค์ประกอบในเอกสาร XML ขาออกซึ่งนโยบายจะแนบการยืนยัน SAML | ||
SignatureAlgorithm |
SHA1 หรือ SHA256 | ||
Subject |
ตัวระบุที่ไม่ซ้ำกันของเรื่องการยืนยัน SAML หากมีแอตทริบิวต์
ref ที่ไม่บังคับ ค่าของ Subject จะได้รับการกำหนดที่
รันไทม์โดยอิงตามตัวแปรที่ระบุ หากมีแอตทริบิวต์ ref ที่ไม่บังคับ ระบบจะใช้ค่าของ Subject
|
||
Template |
หากมีอยู่ ระบบจะสร้างการยืนยันโดยการเรียกใช้เทมเพลตนี้ แทนที่
ทุกอย่างที่ระบุด้วย
{} ด้วยตัวแปรที่เกี่ยวข้อง แล้วลงนามดิจิทัล
ในผลลัพธ์ ระบบจะประมวลผลเทมเพลตตามกฎนโยบาย AssignMessage
ดูกำหนดนโยบาย
ข้อความ
เท่านั้น
|
||
ตรวจสอบการยืนยัน SAML
| ชื่อช่อง | คำอธิบาย |
|---|---|
แอตทริบิวต์ name รายการ |
ชื่อของอินสแตนซ์นโยบาย ชื่อต้องไม่ซ้ำกันในองค์กร
อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้ที่
A-Z0-9._\-$ %
อย่างไรก็ตาม UI การจัดการจะบังคับใช้ข้อจำกัดเพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ
|
แอตทริบิวต์ ignoreContentType รายการ |
บูลีนที่ตั้งค่าเป็น true หรือ false ได้ โดยค่าเริ่มต้น ระบบจะไม่สร้างการยืนยันหากประเภทเนื้อหาของข้อความไม่ใช่ประเภทเนื้อหา XML หากตั้งค่าเป็น true ระบบจะถือว่าข้อความเป็น XML
ไม่ว่า Content-type จะเป็นอะไรก็ตาม |
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 เพื่อการตรวจสอบสิทธิ์และ การให้สิทธิ์ได้
"การยืนยันความปลอดภัย" คือโทเค็นที่เชื่อถือได้ซึ่งอธิบายแอตทริบิวต์ของแอป ผู้ใช้แอป หรือผู้เข้าร่วมรายอื่นๆ ในธุรกรรม การยืนยันความปลอดภัยได้รับการจัดการและใช้โดยเอนทิตี 2 ประเภท ดังนี้
- ผู้ให้บริการข้อมูลประจำตัว: สร้างการยืนยันความปลอดภัยในนามของผู้เข้าร่วม
- ผู้ให้บริการ: ตรวจสอบการยืนยันความปลอดภัยผ่านความสัมพันธ์ที่เชื่อถือได้กับผู้ให้บริการข้อมูลประจำตัว
แพลตฟอร์ม API สามารถทำหน้าที่เป็นผู้ให้บริการข้อมูลประจำตัวและผู้ให้บริการได้ โดยจะทำหน้าที่เป็น ผู้ให้บริการข้อมูลประจำตัวด้วยการสร้างการยืนยันและแนบไปกับข้อความคำขอ เพื่อให้ การยืนยันเหล่านั้นพร้อมให้ประมวลผลโดยบริการแบ็กเอนด์ โดยจะทำหน้าที่เป็นผู้ให้บริการด้วยการ ตรวจสอบการยืนยันในข้อความคำขอขาเข้า
ประเภทนโยบาย SAML รองรับการยืนยัน SAML ที่ตรงกับเวอร์ชัน 2.0 ของข้อกำหนดหลักของ SAML และเวอร์ชัน 1.0 ของข้อกำหนดโปรไฟล์โทเค็น SAML ของ WS-Security
สร้างการยืนยัน SAML
การประมวลผลนโยบาย
- หากข้อความไม่ใช่ XML และไม่ได้ตั้งค่า IgnoreContentType เป็น
trueระบบจะ แสดงข้อผิดพลาด - หากตั้งค่า "เทมเพลต" ให้ประมวลผลเทมเพลตตามที่อธิบายไว้สำหรับนโยบาย AssignMessage หากไม่มีตัวแปรใดๆ และไม่ได้ตั้งค่า IgnoreUnresolvedVariables ให้เพิ่มข้อผิดพลาด
- หากไม่ได้ตั้งค่า "เทมเพลต" ให้สร้างการยืนยันที่มีค่าของพารามิเตอร์ Subject และ Issuer หรือการอ้างอิง
- ลงนามในข้อความยืนยันโดยใช้คีย์ที่ระบุ
- เพิ่มการยืนยันลงในข้อความที่ XPath ที่ระบุ
ตรวจสอบการยืนยัน SAML
การประมวลผลนโยบาย
- นโยบายจะตรวจสอบข้อความขาเข้าเพื่อยืนยันว่าประเภทสื่อของคำขอเป็น XML โดย
ตรวจสอบว่าประเภทเนื้อหาตรงกับรูปแบบ
text/(.*+)?xmlหรือapplication/(.*+)?xmlหากประเภทสื่อไม่ใช่ XML และไม่ได้ตั้งค่า<IgnoreContentType>นโยบายจะทำให้เกิดข้อผิดพลาด - นโยบายจะแยกวิเคราะห์ XML หากการแยกวิเคราะห์ไม่สำเร็จ ระบบจะแจ้งข้อผิดพลาด
- นโยบายจะดึงองค์ประกอบที่ลงนามและการยืนยันโดยใช้ XPath ที่เกี่ยวข้อง
ที่ระบุ (
<SignedElementXPath>และ<AssertionXPath>) หากเส้นทางใดเส้นทางหนึ่งไม่แสดงผลองค์ประกอบ นโยบายจะทำให้เกิดข้อผิดพลาด - นโยบายจะยืนยันว่าข้อความยืนยันนั้นเหมือนกับองค์ประกอบที่ลงชื่อ หรือ เป็นองค์ประกอบย่อยขององค์ประกอบที่ลงชื่อ หากไม่เป็นเช่นนั้น นโยบายจะทำให้เกิดข้อผิดพลาด
- หากมีองค์ประกอบ
<NotBefore>หรือ<NotOnOrAfter>ในการยืนยัน นโยบายจะตรวจสอบการประทับเวลาปัจจุบันกับค่าเหล่านี้ตามที่อธิบายไว้ในส่วน 2.5.1 ของ SAML Core - นโยบายจะใช้กฎเพิ่มเติมสำหรับการประมวลผล "เงื่อนไข" ตามที่อธิบายไว้ ในส่วน 2.5.1.1 ของ SAML Core
- นโยบายจะตรวจสอบลายเซ็นดิจิทัล XML โดยใช้ค่า Trust Store
(
<TrustStore>) ที่อธิบายไว้ข้างต้น หากการตรวจสอบไม่ผ่าน นโยบายจะ ทำให้เกิดข้อผิดพลาด
เมื่อนโยบายดำเนินการเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด นักพัฒนาพร็อกซีจะมั่นใจได้ในสิ่งต่อไปนี้
- ลายเซ็นดิจิทัลในการยืนยันถูกต้องและลงนามโดย CA ที่เชื่อถือได้
- การยืนยันใช้ได้กับช่วงเวลาปัจจุบัน
- ระบบจะดึงข้อมูลเรื่องและผู้ออกการยืนยัน แล้วตั้งค่าในตัวแปรโฟลว์ นโยบายอื่นๆ มีหน้าที่ใช้ค่าเหล่านี้เพื่อการตรวจสอบสิทธิ์เพิ่มเติม เช่น การตรวจสอบว่าชื่อเรื่องถูกต้อง หรือการส่งไปยังระบบเป้าหมายเพื่อการตรวจสอบ
คุณอาจใช้นโยบายอื่นๆ เช่น ExtractVariables เพื่อแยกวิเคราะห์ XML ดิบของการยืนยัน สำหรับการตรวจสอบที่ซับซ้อนยิ่งขึ้น
ตัวแปรโฟลว์
การยืนยัน SAML อาจระบุข้อมูลหลายอย่าง การยืนยัน SAML เป็น XML ที่สามารถแยกวิเคราะห์ได้โดยใช้นโยบาย ExtractVariables และกลไกอื่นๆ เพื่อใช้การตรวจสอบที่ซับซ้อนยิ่งขึ้น
| ตัวแปร | คำอธิบาย |
|---|---|
saml.id |
รหัสการยืนยัน SAML |
saml.issuer |
"ผู้ออก" การยืนยันที่แปลงจากประเภท XML ดั้งเดิมเป็นสตริง |
saml.subject |
"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 |
AuthnStatement AuthInstant |
saml.authnSessionIndex |
ดัชนีเซสชัน AuthnStatement |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดง และตัวแปรข้อผิดพลาดที่กำหนดโดย Edge เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
SourceNotConfigured |
องค์ประกอบต่อไปนี้อย่างน้อย 1 รายการสำหรับ Verified SAML Assertion
ไม่ได้กำหนดนโยบายหรือว่างเปล่า: <Source>, <XPath>
<Namespaces>, <Namespace>
|
build |
TrustStoreNotConfigured |
หากองค์ประกอบ <TrustStore> ว่างเปล่าหรือไม่ได้ระบุใน
นโยบาย VerifySAMLAssertion จะทำให้การทำให้พร็อกซี API ใช้งานได้ล้มเหลว
ต้องระบุ Trust Store ที่ถูกต้อง
|
build |
NullKeyStoreAlias |
หากองค์ประกอบย่อย <Alias> ว่างเปล่าหรือไม่ได้ระบุใน <Keystore>
ของนโยบาย Generate SAML Assertion แล้วทำให้ API ใช้งานได้
พร็อกซีไม่ทำงาน ต้องมีชื่อแทนคีย์สโตร์ที่ถูกต้อง
|
build |
NullKeyStore |
หากองค์ประกอบย่อย <Name> ว่างเปล่าหรือไม่ได้ระบุใน <Keystore>
ของนโยบาย GenerateSAMLAssertion แล้ว การทำให้ API ใช้งานได้
พร็อกซีไม่ทำงาน ต้องระบุชื่อคีย์สโตร์ที่ถูกต้อง
|
build |
NullIssuer |
หากองค์ประกอบ <Issuer> ว่างเปล่าหรือไม่ได้ระบุในส่วน "สร้าง SAML"
นโยบายการยืนยัน การทำให้พร็อกซี 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>หัวข้อที่เกี่ยวข้อง
การแยกตัวแปร: นโยบายแยกตัวแปร