หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้ให้แนวทางเกี่ยวกับวิธีการทํางานกับการรับรองความถูกต้องเมื่อสร้างปริมาณงานชุดเครื่องมือการขยายของ Microsoft Fabric ประกอบด้วยข้อมูลเกี่ยวกับการทํางานกับโทเค็น ความยินยอม และการเข้าถึงบริการต่างๆ จากแอปพลิเคชันส่วนหน้าของคุณ
ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณคุ้นเคยกับแนวคิดในภาพรวมการรับรองความถูกต้อง
โมเดลการรับรองความถูกต้องเฉพาะส่วนหน้า
ชุดเครื่องมือความสามารถในการขยายใช้สถาปัตยกรรมเฉพาะส่วนหน้าที่ช่วยลดความยุ่งยากในการรับรองความถูกต้องเมื่อเทียบกับปริมาณงานแบบเดิม:
- การเรียกใช้ API โดยตรง: ส่วนหน้าของคุณเรียก Fabric API บริการ Azure และแอปพลิเคชันภายนอกโดยตรง
- การนําโทเค็นกลับมาใช้ใหม่: โทเค็นเดียวสามารถใช้เพื่อตรวจสอบสิทธิ์กับบริการที่ปลอดภัยของ Entra หลายรายการ
- ความยินยอมแบบง่าย: การจัดการความยินยอมได้รับการจัดการโดยแพลตฟอร์มด้วยข้อความแจ้งอัตโนมัติ
การกําหนดค่าแอปพลิเคชัน Microsoft Entra
แสดงแท็บ API
กําหนดค่าขอบเขตสําหรับแอปพลิเคชันปริมาณงานของคุณ:
-
ขอบเขตการรวมแฟบริค: อนุญาต Microsoft Power BI ล่วงหน้าด้วยรหัสแอปพลิเคชัน
871c010f-5e61-4fb1-83ac-98610a7e9110 - ขอบเขต API แบบกําหนดเอง: เพิ่มขอบเขตสําหรับ API แบบกําหนดเองที่ปริมาณงานของคุณเปิดเผย
- สิทธิ์แบบละเอียด: ใช้ขอบเขตที่แตกต่างกันสําหรับการดําเนินการอ่านเทียบกับการเขียน
ตัวอย่างเช่น หากปริมาณงานของคุณเปิดเผย API ข้อมูล:
- เพิ่ม
data.readขอบเขตสําหรับการดําเนินการอ่าน - เพิ่ม
data.writeขอบเขตสําหรับการดําเนินการเขียน - ตรวจสอบขอบเขตที่เหมาะสมในตัวจัดการ API ของคุณ
แท็บสิทธิ์ API
กําหนดค่าสิทธิ์สําหรับบริการภายนอกที่ปริมาณงานของคุณจําเป็นต้องเข้าถึง:
-
จําเป็น:
Fabric.Extendภายใต้บริการของ Power BI (บังคับสําหรับการรวม Fabric) -
บริการ Azure: เพิ่มขอบเขตสําหรับบริการ Azure เช่น
https://storage.azure.com/user_impersonation - แอปพลิเคชันแบบกําหนดเอง: เพิ่มขอบเขตสําหรับแอปพลิเคชันที่ปลอดภัยด้วย Entra ของคุณเอง
- บริการของบุคคลที่สาม: รวมบริการภายนอกที่รองรับการรับรองความถูกต้องทางเข้า
รูปแบบการใช้โทเค็น
การใช้โทเค็นสําหรับบริการหลายรายการ
โทเค็นส่วนหน้าที่ได้มาผ่าน Extensibility Toolkit สามารถใช้เพื่อรับรองความถูกต้องกับ:
API ของผ้า
// Token automatically includes required Fabric scopes
const response = await fetch('https://api.fabric.microsoft.com/v1/workspaces', {
headers: {
'Authorization': `Bearer ${token.accessToken}`
}
});
บริการ Azure
// Same token works for Azure services
const response = await fetch('https://management.azure.com/subscriptions', {
headers: {
'Authorization': `Bearer ${token.accessToken}`
}
});
แอปพลิเคชันแบบกําหนดเอง
// Token works for your own Entra-secured applications
const response = await fetch('https://myapp.contoso.com/api/data', {
headers: {
'Authorization': `Bearer ${token.accessToken}`
}
});
การจัดการขอบเขต
ชุดเครื่องมือความสามารถในการขยายบทคัดย่อการจัดการขอบเขตสําหรับสถานการณ์ทั่วไป:
- ไลบรารีไคลเอ็นต์ Fabric: รวมขอบเขต Fabric ที่จําเป็นโดยอัตโนมัติ
- ไลบรารีไคลเอ็นต์ Azure: จัดการขอบเขตบริการ Azure อย่างโปร่งใส
- ขอบเขตที่กําหนดเอง: ระบุขอบเขตเพิ่มเติมเมื่อจําเป็น
การทํางานโดยได้รับความยินยอม
การได้มาซึ่งโทเค็นเริ่มต้น
เริ่มต้นด้วยการรับโทเค็นเพื่อสร้างบริบทการรับรองความถูกต้อง:
const token = await workloadClient.auth.acquireFrontendAccessToken({ scopes: [] });
การโทรนี้อาจส่งผลให้:
- ข้อความแจ้งความยินยอม: หากผู้ใช้ไม่ยินยอมให้แอปพลิเคชันของคุณ
- การได้มาแบบเงียบ: หากได้รับความยินยอมก่อนหน้านี้
การจัดการการเข้าถึงบริการเพิ่มเติม
เมื่อปริมาณงานของคุณจําเป็นต้องเข้าถึงบริการเพิ่มเติม ให้ระบุขอบเขตที่จําเป็น:
try {
// Request token with specific scopes for Azure Storage
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: ['https://storage.azure.com/user_impersonation']
});
// Use token to access Azure Storage
const response = await fetch('https://mystorageaccount.blob.core.windows.net/', {
headers: { 'Authorization': `Bearer ${token.token}` }
});
} catch (error) {
// Handle authentication or authorization errors
console.error('Access failed:', error.message);
}
ตัวอย่างสถานการณ์
สถานการณ์ที่ 1: การเข้าถึง Fabric และบริการ Azure
ปริมาณงานของคุณต้อง:
- รายการพื้นที่ทํางาน Fabric
- อ่านจากที่เก็บข้อมูล Azure
- เขียนไปยัง Azure Key Vault
การดําเนินการ:
- กําหนดค่าสิทธิ์ API สําหรับบริการที่จําเป็น
- รับโทเค็นเริ่มต้น
- ใช้โทเค็นสําหรับการเรียกใช้บริการทั้งหมด
- จัดการกับข้อความแจ้งความยินยอมตามต้องการ
สถานการณ์ที่ 2: การรวมแอปพลิเคชันแบบกําหนดเอง
ปริมาณงานของคุณผสานรวมกับบริการแบ็กเอนด์ของคุณเอง:
- กําหนดค่าแบ็กเอนด์ของคุณ: ตรวจสอบให้แน่ใจว่ายอมรับโทเค็น Entra
- เพิ่มสิทธิ์ API: รวมขอบเขตของแบ็กเอนด์ของคุณในแอปพลิเคชันปริมาณงาน
- ใช้การรับรองความถูกต้องมาตรฐาน: รูปแบบโทเค็นเดียวกันนี้ใช้ได้กับบริการที่กําหนดเองของคุณ
สถานการณ์สมมติที่ 3: การรวมบริการของบริษัทอื่น
การผสานรวมกับบริการภายนอกที่เปิดใช้งาน Entra:
- การลงทะเบียนบริการ: ลงทะเบียนปริมาณงานของคุณกับบริการของบุคคลที่สาม
- การกําหนดค่าขอบเขต: เพิ่มขอบเขตของบริการไปยังสิทธิ์ API ของคุณ
- การใช้โทเค็น: ใช้รูปแบบการรับรองความถูกต้องเดียวกันสําหรับบริการภายนอก
การจัดการข้อผิดพลาดและการแก้ไขปัญหา
ข้อผิดพลาดทั่วไปในการรับรองความถูกต้อง
- ต้องได้รับความยินยอม: ผู้ใช้ไม่ได้ให้สิทธิ์สําหรับขอบเขตที่เฉพาะเจาะจง
- การเข้าถึงแบบมีเงื่อนไข: ข้อกําหนดการตรวจสอบสิทธิ์เพิ่มเติม (เช่น MFA)
- การหมดอายุของโทเค็น: โทเค็นหมดอายุและจําเป็นต้องรีเฟรช
- ขอบเขตไม่ถูกต้อง: ขอบเขตที่ร้องขอไม่ได้กําหนดค่าหรือพร้อมใช้งาน
รูปแบบการจัดการข้อผิดพลาด
async function handleAuthenticatedRequest(url: string, requiredScopes: string[] = []) {
try {
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: requiredScopes
});
return await makeRequest(url, token);
} catch (error) {
if (error.code === 'consent_required') {
// User needs to grant consent for the requested scopes
console.error('Consent required for scopes:', requiredScopes);
}
throw error;
}
}
การจัดการ URI เปลี่ยนเส้นทาง
ชุดเครื่องมือความสามารถในการขยายประกอบด้วยการจัดการ URI การเปลี่ยนเส้นทางในตัวสําหรับป๊อปอัปความยินยอมในการตรวจสอบสิทธิ์ สิ่งนี้ถูกนําไปใช้ในไฟล์หลัก index.ts และจัดการการเปลี่ยนเส้นทางความยินยอมโดยอัตโนมัติ
ชุดเครื่องมือจัดการ:
- การปิดหน้าต่างอัตโนมัติ: ป๊อปอัปความยินยอมจะปิดโดยอัตโนมัติหลังจากการโต้ตอบของผู้ใช้
- การจัดการข้อผิดพลาด: ตรวจพบและจัดการรหัสข้อผิดพลาดที่เฉพาะเจาะจงอย่างเหมาะสม
- การแสดงข้อผิดพลาด: ความพยายามขอความยินยอมที่ล้มเหลวจะแสดงข้อความแสดงข้อผิดพลาดที่ใช้งานง่าย
การใช้งานปัจจุบันในชุดเครื่องมือ:
const redirectUriPath = '/close';
const url = new URL(window.location.href);
if (url.pathname?.startsWith(redirectUriPath)) {
// Handle errors
if (url?.hash?.includes("error")) {
if (url.hash.includes("AADSTS650052")) {
// Handle missing service principal error
printFormattedAADErrorMessage(url?.hash);
} else if (url.hash.includes("AADSTS65004")) {
// Handle user declined consent error
printFormattedAADErrorMessage(url?.hash);
} else {
window.close();
}
} else {
// Close window on successful consent
window.close();
}
}
Note
การจัดการ URI การเปลี่ยนเส้นทางจะรวมอยู่ในเทมเพลตชุดเครื่องมือความสามารถในการขยายโดยอัตโนมัติ คุณไม่จําเป็นต้องนําสิ่งนี้ไปใช้ด้วยตัวเอง เว้นแต่คุณต้องการปรับแต่งลักษณะการทํางานการจัดการข้อผิดพลาด
แนวทางปฏิบัติที่ดีที่สุด
การจัดการโทเค็น
- โทเค็นแคช: นําโทเค็นกลับมาใช้ใหม่จนกว่าจะหมดอายุ
- จัดการการรีเฟรช: ใช้ตรรกะการรีเฟรชโทเค็นอัตโนมัติ
- ที่เก็บข้อมูลที่ปลอดภัย: จัดเก็บโทเค็นอย่างปลอดภัยในหน่วยความจําเบราว์เซอร์
การจัดการความยินยอม
- สิทธิ์ขั้นต่ํา: ขอเฉพาะขอบเขตที่คุณต้องการจริงๆ
- ความยินยอมแบบก้าวหน้า: ขอสิทธิ์เพิ่มเติมเมื่อมีการใช้ฟีเจอร์
- ข้อความที่ชัดเจน: อธิบายให้ผู้ใช้ทราบว่าเหตุใดจึงจําเป็นต้องมีสิทธิ์
การจัดการข้อผิดพลาด
- การเสื่อมสภาพอย่างสง่างาม: ให้ฟังก์ชันสํารองเมื่อเป็นไปได้
- ความคิดเห็นของผู้ใช้: สื่อสารข้อกําหนดการตรวจสอบสิทธิ์อย่างชัดเจน
- ตรรกะการลองใหม่: ใช้กลไกการลองใหม่ที่เหมาะสมสําหรับความล้มเหลวชั่วคราว