แชร์ผ่าน


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

บทความนี้แสดงภาพรวมของการตั้งค่า Microsoft Entra สําหรับการเรียกใช้ Power Platform API หากต้องการเข้าถึงทรัพยากรที่พร้อมใช้งานผ่าน Power Platform API คุณต้องได้รับโทเค็นแบเรอร์จาก Microsoft Entra และส่งเป็นส่วนหัวพร้อมกับคําขอแต่ละรายการ ทั้งนี้ขึ้นอยู่กับชนิดของข้อมูลประจําตัวที่คุณกําลังสนับสนุน (ผู้ใช้เทียบกับบริการหลัก) มีโฟลว์ที่แตกต่างกันในการรับโทเค็นแบเรอร์นี้ ตามที่อธิบายไว้ในบทความนี้

หากต้องการรับโทเค็นแบบแบเรอร์ที่มีสิทธิ์ที่ถูกต้อง ให้ทําตามขั้นตอนต่อไปนี้:

  1. สร้างการลงทะเบียนแอปพลิเคชันในผู้เช่า Microsoft Entra ของคุณ
  2. กําหนดค่าสิทธิ์ API
  3. กําหนดค่าแพลตฟอร์มและเปลี่ยนเส้นทาง URI
  4. (ไม่บังคับ) กําหนดค่าใบรับรองและข้อมูลลับ
  5. ร้องขอโทเค็นการเข้าถึง

ขั้นตอนที่ 1 สร้างการลงทะเบียนโปรแกรมประยุกต์ในผู้เช่า Microsoft Entra ของคุณ

  1. ไปยังพอร์ทัล Azure
  2. เลือก Id Microsoft Entra ที่ด้านบนของหน้า จากนั้นเลือก+ เพิ่ม>การลงทะเบียนแอป
  3. กรอกข้อมูลในหน้า ลงทะเบียนแอปพลิเคชัน :
    1. ชื่อ — ตั้งชื่อที่รู้จักให้กับแอปพลิเคชัน เช่น SDK ของผู้ดูแลระบบ Power Platform
    2. ชนิดบัญชีที่รองรับ — เลือกเฉพาะผู้เช่าเดี่ยว - <ชื่อ>บริษัทของคุณ
    3. เปลี่ยนเส้นทาง URI — ข้ามขั้นตอนนี้ไปเลย คุณกําหนดค่าได้ในขั้นตอนที่ 3
  4. เลือก ลงทะเบียน เพื่อสร้างแอปพลิเคชัน หลังจากการลงทะเบียนเสร็จสมบูรณ์ ให้จด ID แอปพลิเคชัน (ไคลเอนต์) และ ID ไดเรกทอรี (ผู้เช่า) จากหน้าภาพรวม — คุณจําเป็นต้องมีทั้งสองค่าในภายหลัง

คุณยังสามารถสร้างการลงทะเบียนโดยใช้ Azure CLI:

az login

az ad app create --display-name "Power Platform Admin SDK" --sign-in-audience AzureADMyOrg

คําสั่งส่งกลับออบเจ็กต์ JSON โปรดสังเกตค่า appId — ค่านี้คือ ID ไคลเอ็นต์ของคุณ

ขั้นตอนที่ 2 กำหนดค่าสิทธิ์ API

ในการลงทะเบียนแอปใหม่ของคุณ ไปที่แท็บ จัดการ - สิทธิ์ API ภายใต้ส่วนกําหนดค่าสิทธิ์ เลือกเพิ่มสิทธิ์ ในกล่องโต้ตอบ เลือก API ที่องค์กรของฉันใช้แท็บ จากนั้นค้นหา Power Platform API คุณอาจเห็นหลายรายการที่มีชื่อคล้ายกับรายการนี้ ดังนั้นคุณควรตรวจสอบให้แน่ใจว่าคุณใช้รายการที่มี GUID 8578e004-a5c6-46e7-913e-12f58912df43

หากคุณไม่เห็น Power Platform API แสดงในรายการเมื่อค้นหาโดย GUID คุณอาจยังสามารถเข้าถึงได้ แต่ไม่มีการรีเฟรชการมองเห็น เมื่อต้องการบังคับให้รีเฟรช เรียกใช้สคริปต์ต่อไปนี้:

#Install the Microsoft Graph PowerShell SDK module
Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force

Connect-MgGraph
New-MgServicePrincipal -AppId 8578e004-a5c6-46e7-913e-12f58912df43 -DisplayName "Power Platform API"

จากที่นี่ เลือกสิทธิ์ที่คุณต้องการ สิทธิ์เหล่านี้จะถูกจัดกลุ่มตาม Namespaces ภายใน namespace คุณจะเห็นชนิดทรัพยากรและการดําเนินการ เช่น AppManagement.ApplicationPackages.Read ซึ่งให้สิทธิ์การอ่านสําหรับแพคเกจแอปพลิเคชัน สําหรับข้อมูลเพิ่มเติม ให้ดูบทความ การอ้างอิงสิทธิ์

หมายเหตุ

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

สําหรับข้อมูลประจําตัวของบริการหลัก ไม่ใช้สิทธิ์ของแอปพลิเคชัน หลังจากที่คุณสร้างการลงทะเบียนแอปของคุณแล้ว ให้กําหนดบทบาท RBAC เพื่อให้สิทธิ์ที่กําหนดขอบเขต (เช่น ผู้สนับสนุน หรือ ผู้อ่าน) สําหรับข้อมูลเพิ่มเติม ดูบทช่วยสอน: กําหนดบทบาท RBAC ให้กับโครงร่างสําคัญของบริการ

หลังจากที่คุณเพิ่มสิทธิ์ที่จําเป็นให้กับแอปพลิเคชันแล้ว ให้เลือก ให้การยินยอมของผู้ดูแลระบบ เพื่อดําเนินการตั้งค่าให้เสร็จสมบูรณ์ โดยการให้ความยินยอมของผู้ดูแลระบบ คุณอนุญาตสิทธิ์สําหรับผู้ใช้ทั้งหมดในผู้เช่าเพื่อไม่ให้พวกเขาได้รับพร้อมท์ในกล่องโต้ตอบความยินยอมแบบโต้ตอบในครั้งแรกที่พวกเขาใช้แอปของคุณ หากคุณต้องการความยินยอมแบบโต้ตอบต่อผู้ใช้ ให้ทําตามแพลตฟอร์มข้อมูลประจําตัวของ Microsoft และโฟลว์รหัสการให้สิทธิ์ OAuth 2.0

คุณยังสามารถให้ความยินยอมของผู้ดูแลระบบโดยใช้ Azure CLI:

# Replace <app-id> with your application (client) ID
az ad app permission admin-consent --id <app-id>

ขั้นตอนที่ 3 กําหนดค่าแพลตฟอร์มและเปลี่ยนเส้นทาง URI

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

  1. ภายในการลงทะเบียนแอปของคุณ ไปที่จัดการ - การรับรองความถูกต้อง

  2. เลือกเพิ่มการเปลี่ยนเส้นทาง URI จากนั้นเลือกแอปพลิเคชันอุปกรณ์เคลื่อนที่และเดสก์ท็อป

  3. เลือก URI เปลี่ยนเส้นทางที่มีอยู่ภายในต่อไปนี้:

    https://login.microsoftonline.com/common/oauth2/nativeclient

  4. เลือก กําหนดค่า เพื่อบันทึก

คุณยังสามารถเพิ่ม URI เปลี่ยนเส้นทางได้โดยใช้ Azure CLI:

# Replace <app-id> with your application (client) ID
az ad app update --id <app-id> --public-client-redirect-uris https://login.microsoftonline.com/common/oauth2/nativeclient

การตั้งค่าไคลเอ็นต์สาธารณะ

ในส่วนการตั้งค่าขั้นสูงบนแท็บการรับรองความถูกต้องเดียวกัน จะมีปุ่มสลับ อนุญาตโฟลว์ไคลเอ็นต์สาธารณะ ตั้งค่าการสลับนี้เป็น ใช่ เท่านั้นถ้าคุณวางแผนที่จะใช้โฟลว์ข้อมูลประจําตัวของรหัสผ่านเจ้าของทรัพยากร (ROPC) ซึ่งส่งชื่อผู้ใช้และรหัสผ่านโดยตรงในเนื้อความของการร้องขอโทเค็น

โฟลว์นี้ใช้ไม่ได้กับบัญชีที่เปิดใช้งานการรับรองความถูกต้องแบบหลายปัจจัย สําหรับโฟลว์โค้ดของเบราว์เซอร์หรืออุปกรณ์แบบโต้ตอบ คุณไม่จําเป็นต้องเปิดใช้งานการตั้งค่านี้

ขั้นตอนที่ 4 (ไม่บังคับ) กําหนดค่าใบรับรองและข้อมูลลับ

ถ้าแอปของคุณจําเป็นต้องอ่านและเขียนทรัพยากรในฐานะตัวมันเอง หรือที่เรียกว่า บริการหลัก มีสองวิธีในการรับรองความถูกต้อง หากต้องการใช้ใบรับรอง ให้ไปที่ จัดการ - ใบรับรองและข้อมูลลับ ภายใต้ส่วน ใบรับรอง อัปโหลดใบรับรอง x509 ที่คุณสามารถใช้เพื่อรับรองความถูกต้องได้

อีกวิธีหนึ่งคือการใช้ส่วน ข้อมูลลับ เพื่อสร้างข้อมูลลับของไคลเอ็นต์ บันทึกข้อมูลลับไว้ในที่ปลอดภัยเพื่อใช้กับความต้องการระบบอัตโนมัติของคุณ ตัวเลือกใบรับรองหรือข้อมูลลับช่วยให้คุณสามารถรับรองความถูกต้องกับ Microsoft Entra และรับโทเค็นสําหรับไคลเอ็นต์นี้ ซึ่งคุณส่งผ่านไปยัง REST API หรือ cmdlet ของ PowerShell อย่างใดอย่างหนึ่ง

ขั้นตอนที่ 5 คำขอโทเค็นการเข้าใช้

คุณสามารถรับโทเค็นแบเรอร์การเข้าถึงได้สองวิธี: วิธีหนึ่งใช้สําหรับชื่อผู้ใช้และรหัสผ่านและอีกวิธีหนึ่งคือสําหรับบริการหลัก

โฟลว์ชื่อผู้ใช้และรหัสผ่าน

โปรดแน่ใจว่าได้อ่าน ส่วนไคลเอ็นต์สาธารณะแล้ว จากนั้นส่งคำขอ POST ผ่าน HTTP ไปที่ Microsoft Entra ID พร้อมส่วนข้อมูลชื่อผู้ใช้และรหัสผ่าน

Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Accept: application/json
POST https://login.microsoftonline.com/YOUR_TENANT.COM/oauth2/v2.0/token
BODY:
client_id={CLIENT_ID_FROM_AZURE_CLIENT_APP}&scope=https://api.powerplatform.com/.default&username={USER_EMAIL_ADDRESS}&password={PASSWORD}&grant_type=password

ตัวอย่างก่อนหน้านี้ประกอบด้วยตัวแทนข้อความที่คุณสามารถดึงข้อมูลจากแอปพลิเคชันไคลเอ็นต์ของคุณในรหัส Microsoft Entra คุณได้รับการตอบกลับที่คุณสามารถใช้เพื่อเรียกใช้ Power Platform API ในภายหลังได้

{
  "token_type": "Bearer",
  "scope": "https://api.powerplatform.com/AppManagement.ApplicationPackages.Install https://api.powerplatform.com/AppManagement.ApplicationPackages.Read https://api.powerplatform.com/.default",
  "expires_in": 4747,
  "ext_expires_in": 4747,
  "access_token": "eyJ0eXAiOiJKV1QiLCJu..."
}

ใช้ค่า access_token ในการเรียกต่อไปยัง Power Platform API พร้อมส่วนหัว HTTP ของ การอนุญาต

โฟลว์บริการหลัก

โปรดแน่ใจว่าได้อ่านส่วนกําหนดค่าใบรับรองและข้อมูลลับ จากนั้นส่งคำขอ POST ผ่าน HTTP ไปที่ Microsoft Entra ID พร้อมส่วนข้อมูลความลับของไคลเอ็นต์ วิธีการรับรองความถูกต้องนี้มักจะเรียกว่าการรับรองความถูกต้องแบบโครงร่างสําคัญของบริการ

สำคัญ

ก่อนที่จะใช้การรับรองความถูกต้องของบริการหลัก ให้ทําตามขั้นตอนที่ 1-4 ก่อนหน้าในบทความนี้เพื่อสร้างและกําหนดค่าการลงทะเบียนแอปของคุณด้วยใบรับรองหรือความลับของไคลเอ็นต์ จากนั้นกําหนดบทบาท RBAC สําหรับบริการหลักเพื่อควบคุมระดับการเข้าถึง เมื่อต้องการเรียนรู้เพิ่มเติม ดูบทช่วยสอน: กําหนดบทบาท RBAC ให้กับโครงร่างสําคัญของบริการ

Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Accept: application/json
POST https://login.microsoftonline.com/YOUR_TENANT.COM/oauth2/v2.0/token
BODY:
client_id={CLIENT_ID_FROM_AZURE_CLIENT_APP}&scope=https://api.powerplatform.com/.default&client_secret={SECRET_FROM_AZURE_CLIENT_APP}&grant_type=client_credentials

ตัวอย่างก่อนหน้านี้ประกอบด้วยตัวแทนข้อความที่คุณสามารถดึงข้อมูลจากแอปพลิเคชันไคลเอ็นต์ของคุณในรหัส Microsoft Entra คุณได้รับการตอบกลับที่คุณสามารถใช้เพื่อเรียกใช้ Power Platform API ในภายหลังได้

{
  "token_type": "Bearer",
  "expires_in": 3599,
  "ext_expires_in": 3599,
  "access_token": "eyJ0eXAiOiJKV1..."
}

ใช้ค่า access_token ในการเรียกต่อไปยัง Power Platform API พร้อมส่วนหัว HTTP ของ การอนุญาต สิทธิ์ที่มีประสิทธิภาพของบริการหลักจะถูกกําหนดโดยบทบาท RBAC ที่มอบหมายให้ เมื่อต้องการเรียนรู้วิธีการกําหนดบทบาท ดูบทช่วยสอน: กําหนดบทบาท RBAC ให้โครงร่างสําคัญของบริการ

เริ่มต้นใช้งานด่วนด้วย Azure CLI

สคริปต์ต่อไปนี้สร้างการลงทะเบียนแอปแบบครบวงจร เรียกใช้แต่ละคําสั่งตามลําดับและแทนที่ค่าตัวแทนข้อความด้วยของคุณเอง

# Sign in to Azure CLI
az login

# Create the app registration (single tenant)
az ad app create --display-name "Power Platform Admin SDK" --sign-in-audience AzureADMyOrg

# Save the app ID from the output, then create a service principal for it
az ad sp create --id <app-id>

# Add a delegated permission (example: AppManagement.ApplicationPackages.Read)
# The --api value is the Power Platform API app ID.
# The --api-permissions value is the permission ID and type (Scope = delegated).
# Repeat this command for each permission you need. See the Permission reference for IDs.
az ad app permission add --id <app-id> \
  --api 8578e004-a5c6-46e7-913e-12f58912df43 \
  --api-permissions <permission-id>=Scope

# Grant admin consent so users aren't prompted individually
az ad app permission admin-consent --id <app-id>

# Add the native client redirect URI for interactive auth
az ad app update --id <app-id> \
  --public-client-redirect-uris https://login.microsoftonline.com/common/oauth2/nativeclient

หลังจากเรียกใช้คําสั่งเหล่านี้แล้ว คุณสามารถใช้การลงทะเบียนแอปกับ SDK, PowerShell หรือการเรียก REST โดยตรงได้ หากต้องการค้นหารหัสการอนุญาตสําหรับ--api-permissionsพารามิเตอร์ ให้ดู การอ้างอิงสิทธิ์

การแก้ไขปัญหาทั่วไป

ข้อผิดพลาดนี้เกิดขึ้นเมื่อผู้ดูแลระบบไม่ยินยอมให้สิทธิ์ API ในการลงทะเบียนแอปของคุณ ไปที่ การลงทะเบียน>แอปสิทธิ์ API ของแอป>ของคุณ และเลือก ให้การยินยอมของผู้ดูแลระบบ

หรือ เรียกใช้:

az ad app permission admin-consent --id <app-id>

ข้อผิดพลาด "ผู้ใช้ไม่ได้ถูกกําหนดให้กับบทบาทสําหรับแอปพลิเคชัน"

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

  • ไปที่แอปพลิเคชัน>Microsoft Entra ID> Enterprise คุณสมบัติแอป>ของคุณ และตั้งค่าการกําหนดที่จําเป็นสําหรับไม่
  • เพิ่มผู้ใช้หรือกลุ่มความปลอดภัยที่เกี่ยวข้องภายใต้ ผู้ใช้และกลุ่ม

การเข้าถึงแบบบล็อกนโยบายการเข้าถึงตามเงื่อนไข

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

"POWER Platform API" ไม่พบในตัวเลือก API

ถ้าการค้นหา Power Platform API ตามชื่อหรือ GUID ในกล่องโต้ตอบสิทธิ์ API ไม่ส่งกลับผลลัพธ์ โครงร่างสําคัญของบริการไม่ได้ถูกสร้างขึ้นในผู้เช่าของคุณ ทําตามขั้นตอนการบังคับรีเฟรชใน ขั้นตอนที่ 2 เพื่อสร้าง

รับรองความถูกต้องด้วย Power Platform SDKs และ PowerShell

ตัวอย่างต่อไปนี้แสดงวิธีการรับรองความถูกต้องและเรียกใช้ API ตัวอย่างโดยใช้ SDK และ PowerShell แต่ละรายการ ก่อนเรียกใช้ตัวอย่างเหล่านี้ ทําตามขั้นตอนที่ 1-3 ก่อนหน้าในบทความนี้เพื่อสร้างและกําหนดค่าการลงทะเบียนแอปของคุณ

การรับรองความถูกต้องแบบโต้ตอบ (ผู้ใช้ที่ได้รับมอบสิทธิ์)

การรับรองความถูกต้องแบบโต้ตอบจะเปิดหน้าต่างเบราว์เซอร์ให้ผู้ใช้ลงชื่อเข้าใช้ โฟลว์นี้ทํางานได้ดีที่สุดสําหรับสคริปต์นักพัฒนา เครื่องมือผู้ดูแลระบบ และสถานการณ์ใดๆ ที่ผู้ใช้ปรากฏอยู่

# Sign in interactively (opens a browser)
Connect-AzAccount

# Get an access token for the Power Platform API
$token = Get-AzAccessToken -ResourceUrl "https://api.powerplatform.com"

# Call the List Environments endpoint as an example
$headers = @{ Authorization = "Bearer $($token.Token)" }
$environments = Invoke-RestMethod -Uri "https://api.powerplatform.com/environmentmanagement/environments?api-version=2024-10-01" -Headers $headers
$environments.value | Format-Table name, properties.displayName

ไคลเอ็นต์ที่เป็นความลับ (บริการหลัก)

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

สำคัญ

ก่อนที่จะใช้การรับรองความถูกต้องของบริการหลัก ให้ทําตามขั้นตอนที่ 1-4 ด้านบนเพื่อสร้างและกําหนดค่าการลงทะเบียนแอปของคุณด้วยใบรับรองหรือข้อมูลลับของไคลเอ็นต์ จากนั้นกําหนดบทบาท RBAC สําหรับบริการหลักเพื่อควบคุมระดับการเข้าถึง สําหรับข้อมูลเพิ่มเติม ดูบทช่วยสอน: กําหนดบทบาท RBAC ให้กับโครงร่างสําคัญของบริการ

$tenantId = "YOUR_TENANT_ID"
$clientId = "YOUR_CLIENT_ID"
$clientSecret = "YOUR_CLIENT_SECRET"

# Request a token using client credentials
$body = @{
    client_id     = $clientId
    scope         = "https://api.powerplatform.com/.default"
    client_secret = $clientSecret
    grant_type    = "client_credentials"
}
$tokenResponse = Invoke-RestMethod -Method Post `
    -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" `
    -ContentType "application/x-www-form-urlencoded" `
    -Body $body

# Call the List Environments endpoint as an example
$headers = @{ Authorization = "Bearer $($tokenResponse.access_token)" }
$environments = Invoke-RestMethod -Uri "https://api.powerplatform.com/environmentmanagement/environments?api-version=2024-10-01" -Headers $headers
$environments.value | Format-Table name, properties.displayName

บทช่วยสอน: กําหนดบทบาท RBAC ให้กับโครงร่างสําคัญของบริการ
การควบคุมการเข้าถึงตามบทบาทสําหรับศูนย์การจัดการ Power Platform
การอ้างอิงสิทธิ์