อ่านในภาษาอังกฤษ

แชร์ผ่าน


ภาพรวมการรับรองความถูกต้องและการรับรองความถูกต้อง Backend

ตัวอย่างปริมาณงานสําหรับนักพัฒนา Fabric มีโฟลว์การรับรองความถูกต้องต่อไปนี้ที่ฝั่ง Backend

การรับรองความถูกต้องและการอนุญาตคําขอจาก Fabric เป็นปริมาณงาน

โครงสร้างหัวข้อการตรวจสอบ

ส่วนหัวการรับรองความถูกต้องใช้รูปแบบโทเค็นเฉพาะ:

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"
    }
    

ดู IAuthenticationService

หมายเหตุ

การตรวจสอบความถูกต้องทั้งหมดในรหัสตัวอย่างของเราใช้สําหรับโทเค็นเวอร์ชัน 1.0

การอนุญาต

เมื่อยืนยันว่าคําขอมาจากบริการ Fabric (ผ่าน appToken) Fabric จะตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นในการดําเนินการตามเมตาดาต้าสิทธิ์ของ 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

API สาธารณะ

ในการเรียกใช้ Fabric API สาธารณะ ปริมาณงานควรได้รับโทเค็น Microsoft Entra OBO มาตรฐานที่มีขอบเขต API ที่เกี่ยวข้องและส่งผ่านเป็นโทเค็นแบเรอร์ในส่วนหัวการรับรองความถูกต้องของคําขอ

ดู FabricExtensionController

การรับรองความถูกต้องและการอนุญาตคําขอจากปริมาณงาน FE เป็นปริมาณงาน BE

หัวข้อการรับรองความถูกต้อง

ส่วนหัวการรับรองความถูกต้องในคําขอที่ส่งจากปริมาณงาน FE ไปยังปริมาณงาน BE ใช้โทเค็นแบบแบเรอร์มาตรฐาน

การรับรองความถูกต้อง

วิธี AuthenticateControlPlaneCall ในปริมาณงาน BE มีหน้าที่รับผิดชอบในการตรวจสอบโทเค็น การตรวจสอบหลักที่ดําเนินการคือ:

  • อายุการใช้งานของโทเค็น: ตรวจสอบให้แน่ใจว่าโทเค็นอยู่ภายในระยะเวลาการใช้งานที่ถูกต้อง

  • ลายเซ็น: ตรวจสอบความถูกต้องของโทเค็น

  • ผู้ชม: ตรวจสอบว่าผู้ชมของโทเค็นตรงกับแอป Microsoft Entra ปริมาณงาน

  • ผู้ออก: ตรวจสอบผู้ออกโทเค็น

  • ขอบเขตที่อนุญาต: ตรวจสอบความถูกต้องของขอบเขตที่โทเค็นได้รับอนุญาตให้เข้าถึง

การตรวจสอบสามารถทําได้โดยการเรียกใช้วิธีการ ValidatePermissions วิธีนี้จะเรียกใช้ resolvePermissions API ในจุดสิ้นสุดการควบคุมปริมาณงาน Fabric สําหรับ Fabric ที่เกี่ยวข้องและตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นสําหรับการดําเนินการหรือไม่

การดําเนินการที่ใช้เวลานาน - รีเฟรชโทเค็น

การตรวจสอบสามารถทําได้โดยการเรียกใช้วิธีการ ValidatePermissions วิธีนี้จะเรียกใช้ resolvePermissions API ในจุดสิ้นสุดการควบคุมปริมาณงาน Fabric สําหรับ Fabric ที่เกี่ยวข้องและตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จําเป็นสําหรับการดําเนินการหรือไม่

ถ้าปริมาณงานของคุณรวมการดําเนินงานที่ใช้เวลานาน ตัวอย่างเช่น เป็นส่วนหนึ่งของ JobScheduler คุณอาจพบในสถานการณ์ที่อายุการใช้งานของโทเค็นไม่เพียงพอ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการรับรองความถูกต้องของกระบวนการ ทํางานที่นาน กระบวนการ OBO ที่ใช้เวลานาน