คุณกำลังดูเอกสารประกอบ 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 |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดง และตัวแปรข้อผิดพลาดที่กำหนดโดย 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>
หัวข้อที่เกี่ยวข้อง
ตัวแปรการแตกข้อมูล: ตัวแปรการดึงข้อมูล นโยบาย