นโยบาย SAMLAssertion

คุณกำลังดูเอกสารประกอบ 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

การประมวลผลนโยบาย:

  1. ถ้าข้อความไม่ใช่ XML และ ExcludeContentType ไม่ได้ตั้งค่าเป็น true จะทำให้ ทำความผิด
  2. หากเป็น "เทมเพลต" แล้วประมวลผลเทมเพลตตามที่อธิบายไว้สำหรับนโยบาย AssignMessage หากไม่มีตัวแปรใดๆ และไม่ได้ตั้งค่า ignoreUnresolvedVariable ให้แสดงผลข้อผิดพลาด
  3. หากเป็น "เทมเพลต" ไม่ได้กำหนด แล้วสร้างการยืนยันที่มีค่าของ พารามิเตอร์เรื่องและผู้ออกบัตรหรือข้อมูลอ้างอิง
  4. ลงนามการยืนยันโดยใช้คีย์ที่ระบุ
  5. เพิ่มการยืนยันไปยังข้อความที่ XPath ที่ระบุ

ตรวจสอบการยืนยัน SAML

การประมวลผลนโยบาย:

  1. นโยบายนี้จะตรวจสอบข้อความขาเข้าเพื่อยืนยันว่าประเภทสื่อของคำขอเป็น XML กำลังตรวจสอบว่าประเภทเนื้อหาตรงกับรูปแบบ text/(.*+)?xml หรือ application/(.*+)?xml หากประเภทสื่อไม่ใช่ XML และ ไม่ได้ตั้งค่า <IgnoreContentType> นโยบายจะส่งผลให้เกิดข้อผิดพลาด
  2. นโยบายจะแยกวิเคราะห์ XML หากการแยกวิเคราะห์ไม่สำเร็จ จะเกิดข้อผิดพลาดขึ้น
  3. นโยบายจะดึงองค์ประกอบที่ลงนามและการยืนยันโดยใช้ XPath ที่เกี่ยวข้อง ที่ระบุ (<SignedElementXPath> และ <AssertionXPath>) หากเส้นทางใดเส้นทางหนึ่งเหล่านี้ไม่แสดงผลองค์ประกอบ นโยบายจะส่งผลให้เกิดข้อผิดพลาด
  4. นโยบายจะยืนยันว่าการยืนยันนั้นเหมือนกับองค์ประกอบที่ลงนาม หรือ เป็นองค์ประกอบย่อยขององค์ประกอบที่ลงชื่อเข้าใช้ หากไม่เป็นความจริง นโยบายจะตัดสินความผิด
  5. หาก <NotBefore> หรือ <NotOnOrAfter> อย่างใดอย่างหนึ่ง ปรากฏอยู่ในการยืนยัน นโยบายจะตรวจสอบการประทับเวลาปัจจุบันกับ ค่าเหล่านี้ตามที่อธิบายไว้ในส่วน SAML Core 2.5.1
  6. นโยบายจะใช้กฎเพิ่มเติมสำหรับการประมวลผล "เงื่อนไข" ตามที่อธิบายไว้ ในส่วน SAML Core 2.5.1.1
  7. นโยบายจะตรวจสอบลายเซ็นดิจิทัล 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>
TrustStoreNotConfigured หากองค์ประกอบ <TrustStore> ว่างเปล่าหรือไม่ได้ระบุใน นโยบาย VerifySAMLAssertion จะทำให้การทำให้พร็อกซี API ใช้งานได้ล้มเหลว ต้องระบุ Trust Store ที่ถูกต้อง
NullKeyStoreAlias หากองค์ประกอบย่อย <Alias> ว่างเปล่าหรือไม่ได้ระบุใน <Keystore> ของนโยบาย Generate SAML Assertion แล้วทำให้ API ใช้งานได้ พร็อกซีไม่ทำงาน ต้องมีชื่อแทนคีย์สโตร์ที่ถูกต้อง
NullKeyStore หากองค์ประกอบย่อย <Name> ว่างเปล่าหรือไม่ได้ระบุใน <Keystore> ของนโยบาย GenerateSAMLAssertion แล้ว การทำให้ API ใช้งานได้ พร็อกซีไม่ทำงาน ต้องระบุชื่อคีย์สโตร์ที่ถูกต้อง
NullIssuer หากองค์ประกอบ <Issuer> ว่างเปล่าหรือไม่ได้ระบุในส่วน "สร้าง SAML" นโยบายการยืนยัน การทำให้พร็อกซี API ใช้งานได้ล้มเหลว ต ต้องระบุค่า <Issuer> ที่ถูกต้อง

ตัวแปรความผิดพลาด

ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย

ตัวแปร สถานที่ ตัวอย่าง
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>

หัวข้อที่เกี่ยวข้อง

ตัวแปรการแตกข้อมูล: ตัวแปรการดึงข้อมูล นโยบาย