ภาพรวมการรับรองความถูกต้องและการรับรองความถูกต้อง Backend
ตัวอย่างปริมาณงานสําหรับนักพัฒนา Fabric มีโฟลว์การรับรองความถูกต้องต่อไปนี้ที่ฝั่ง Backend
ส่วนหัวการรับรองความถูกต้องใช้รูปแบบโทเค็นเฉพาะ:
SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"
รูปแบบนี้มีโทเค็นที่แตกต่างกันสองแบบ:
subjectToken
: โทเค็นที่ได้รับมอบสิทธิ์ซึ่งแสดงผู้ใช้ในนามของการดําเนินการดังกล่าวappToken
: โทเค็นเฉพาะสําหรับแอปพลิเคชัน Fabric
เหตุผลเบื้องหลังการใช้ส่วนหัวแบบโทเค็นแบบคู่คือแบบสามแบบ:
การตรวจสอบความถูกต้อง: ปริมาณงานสามารถตรวจสอบว่าคําขอมาจาก Fabric โดยการตรวจสอบ
appToken
ความถูกต้องบริบทผู้ใช้:
subjectToken
ให้บริบทของผู้ใช้สําหรับการดําเนินการที่กําลังดําเนินการการสื่อสารระหว่างบริการ: ปริมาณงานสามารถรับโทเค็นในนามของ (OBO) โดยใช้
subjectToken
อนุญาตให้เรียกใช้บริการอื่น ๆ ด้วยโทเค็นผู้ใช้
การตรวจสอบการรับรองความถูกต้องหลักที่ดําเนินการสําหรับ SubjectAndAppToken คือ:
การตรวจสอบความถูกต้องและการแยกวิเคราะห์ค่าส่วนหัวการรับรองความถูกต้องทําได้ในวิธี AuthenticateControlPlaneCall โทเค็นต้องเริ่มต้นด้วยคํานําหน้า "SubjectAndAppToken1.0" และมีโทเค็นสองตัว -
subjectToken
และappToken
การตรวจสอบคุณสมบัติของโทเค็น Entra: ทั้ง
subjectToken
และappToken
ได้รับการตรวจสอบสําหรับคุณสมบัติโทเค็น Microsoft Entra ทั่วไปในวิธี ValidateAadTokenCommon คุณสมบัติเหล่านี้รวมถึงลายเซ็นโทเค็น อายุการใช้งานโทเค็น ผู้ชมโทเค็น (ผู้ชมแอปปริมาณงาน) และเวอร์ชันโทเค็น (1.0) และผู้ออกการตรวจสอบคุณสมบัติ appToken: ไม่ควร
appToken
มีการscp
อ้างสิทธิ์ แต่ควรมีการidtyp
อ้างสิทธิ์กับ แอป เป็นค่า นอกจากนี้ เรายังตรวจสอบการtid
อ้างสิทธิ์ในรหัสผู้เช่าของผู้เช่าของผู้เผยแพร่ปริมาณงานแอปตัวอย่างการอ้างสิทธิ์:
{ "aud": "api://localdevinstance/00001111-aaaa-2222-bbbb-3333cccc4444/Fabric.WorkloadSample/123", "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/", "iat": 1700047232, "nbf": 1700047232, "exp": 1700133932, "aio": "E2VgYLjBuv2l+c6cmm/iP/bnL2v+AQA=", "appid": "11112222-bbbb-3333-cccc-4444dddd5555" "appidacr": "2", "idp": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/", "idtyp": "app", "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "rh": "0.ACgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZAAA.", "sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff", "uti": "5bgMXs3uMUSAHCruRjACAA", "ver": "1.0" }
การตรวจสอบคุณสมบัติ subjectToken: ตรวจสอบให้แน่ใจว่า subjectToken มีการ
scp
อ้างสิทธิ์ด้วยFabricWorkloadControl
ขอบเขต ว่าไม่มีการidtyp
อ้างสิทธิ์ในโทเค็น และมีค่าเหมือนกับappid
ในappToken
ตัวอย่างการอ้างสิทธิ์ SubjectToken:
{ "aud": "api://localdevinstance/00001111-aaaa-2222-bbbb-3333cccc4444/Fabric.WorkloadSample/123", "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/", "iat": 1700050446, "nbf": 1700050446, "exp": 1700054558, "acr": "1", "aio": "ATQAy/8VAAAAUgWRMRnBo4VGHvrKRykUXOXBNKS1cHnBxLrYkZJJGSjAVyJGBecbLdSud1GUakER", "amr": [ "pwd" ], "appid": "11112222-bbbb-3333-cccc-4444dddd5555" "appidacr": "2", "ipaddr": "46.117.19.50", "name": "john doe", "oid": "bbbbbbbb-1111-2222-3333-cccccccccccc", "rh": "0.ASgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZANQ.", "scp": "FabricWorkloadControl", "sub": "X0Wl85UA-uOmdkQz5MoT-hEgYZXDq9FYdS8g2bFUaZA", "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff", "unique_name": "user1@constso.com", "upn": "user1@constso.com", "uti": "_llZwmJoSUiHv-kw6tfDAA", "ver": "1.0" }
หมายเหตุ
การตรวจสอบความถูกต้องทั้งหมดในรหัสตัวอย่างของเราใช้สําหรับโทเค็นเวอร์ชัน 1.0
เมื่อยืนยันว่าคําขอมาจากบริการ Fabric (ผ่าน appToken
) Fabric จะตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นในการดําเนินการตามเมตาดาต้าสิทธิ์ของ Fabric
ตัวควบคุมปริมาณงาน API เป็น Fabric API พิเศษที่สนับสนุนปริมาณงานด้วยการจัดการวงจรชีวิตรายการ Fabric API เหล่านี้ใช้รูปแบบส่วนหัวสําหรับการให้สิทธิ์ SubjectAndAppToken1.0 เดียวกัน
SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"
การเรียกที่มาจากปริมาณงาน รวมถึงโทเค็นต่อไปนี้:
subjectToken
: โทเค็นที่มอบหมายโดยผู้ใช้ (ได้รับผ่านโฟลว์ OBO) ที่แสดงผู้ใช้ที่กําลังดําเนินการในนามของผู้ใช้ Fabric จะตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นในการดําเนินการที่จําเป็นหรือไม่appToken
: โทเค็นเฉพาะสําหรับแอปพลิเคชันปริมาณงาน ผ้าตรวจสอบว่าโทเค็นนี้มาจากแอป Microsoft Entra ของปริมาณงานที่รายการ Fabric ที่เกี่ยวข้องเป็นสมาชิกและอยู่ในผู้เช่าของผู้เช่าของผู้เผยแพร่ปริมาณงาน
ValidatePermissions
ดูวิธีการ ใน AuthorizationHandler
ในการเรียกใช้ Fabric API สาธารณะ ปริมาณงานควรได้รับโทเค็น Microsoft Entra OBO มาตรฐานที่มีขอบเขต API ที่เกี่ยวข้องและส่งผ่านเป็นโทเค็นแบเรอร์ในส่วนหัวการรับรองความถูกต้องของคําขอ
ส่วนหัวการรับรองความถูกต้องในคําขอที่ส่งจากปริมาณงาน FE ไปยังปริมาณงาน BE ใช้โทเค็นแบบแบเรอร์มาตรฐาน
วิธี AuthenticateControlPlaneCall ในปริมาณงาน BE มีหน้าที่รับผิดชอบในการตรวจสอบโทเค็น การตรวจสอบหลักที่ดําเนินการคือ:
อายุการใช้งานของโทเค็น: ตรวจสอบให้แน่ใจว่าโทเค็นอยู่ภายในระยะเวลาการใช้งานที่ถูกต้อง
ลายเซ็น: ตรวจสอบความถูกต้องของโทเค็น
ผู้ชม: ตรวจสอบว่าผู้ชมของโทเค็นตรงกับแอป Microsoft Entra ปริมาณงาน
ผู้ออก: ตรวจสอบผู้ออกโทเค็น
ขอบเขตที่อนุญาต: ตรวจสอบความถูกต้องของขอบเขตที่โทเค็นได้รับอนุญาตให้เข้าถึง
การตรวจสอบสามารถทําได้โดยการเรียกใช้วิธีการ ValidatePermissions วิธีนี้จะเรียกใช้ resolvePermissions
API ในจุดสิ้นสุดการควบคุมปริมาณงาน Fabric สําหรับ Fabric ที่เกี่ยวข้องและตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นสําหรับการดําเนินการหรือไม่
การตรวจสอบสามารถทําได้โดยการเรียกใช้วิธีการ ValidatePermissions วิธีนี้จะเรียกใช้ resolvePermissions
API ในจุดสิ้นสุดการควบคุมปริมาณงาน Fabric สําหรับ Fabric ที่เกี่ยวข้องและตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นสําหรับการดําเนินการหรือไม่
ถ้าปริมาณงานของคุณรวมการดําเนินงานที่ใช้เวลานาน ตัวอย่างเช่น เป็นส่วนหนึ่งของ JobScheduler คุณอาจพบในสถานการณ์ที่อายุการใช้งานของโทเค็นไม่เพียงพอ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการรับรองความถูกต้องของกระบวนการ ทํางานที่นาน กระบวนการ OBO ที่ใช้เวลานาน