หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
เมื่อคุณใช้ข้อมูลประจําตัวที่มีการจัดการ Power Platform ปลั๊กอิน Dataverse หรือแพคเกจปลั๊กอินสามารถเชื่อมต่อกับทรัพยากร Azure ได้โดยไม่ต้องจัดการข้อมูลประจําตัว บทความนี้อธิบายถึงการตั้งค่า (เวอร์ชัน 2) ที่แนะนํา ซึ่งสร้างข้อมูลประจําตัวของรัฐบาลกลาง (FIC) จากแฮชของชื่อที่แตกต่างแบบเต็มของใบรับรอง (DN)
โน้ต
ใช้ Managed identity เวอร์ชัน 2 ของ Power Platform สำหรับปลั๊กอินใหม่ทั้งหมดและปลั๊กอินที่มีอยู่เดิม หากคุณยังคงดูแลปลั๊กอินที่ยังใช้รูปแบบเวอร์ชัน 1 (อิงตาม CN) โปรดดู ตั้งค่า Managed identity เวอร์ชัน 1 เมื่อต้องการย้ายปลั๊กอินที่มีอยู่ไปยังเวอร์ชัน 2 ดูอัปเกรดเป็นเวอร์ชัน 2
ทําไมเวอร์ชัน 2
เวอร์ชัน 2 สร้างตัวระบุชื่อเรื่องเฉพาะ ASCII ที่มีความยาวคงที่ดังนั้นจึงทํางานกับชื่อใบรับรองใด ๆ เวอร์ชัน 1 ทำงานล้มเหลวกับชื่อใบรับรองบางชื่อ (CNs):
-
อักขระที่ไม่ใช่ ASCII ใน CN (ตัวอย่างเช่น ตัวอักษรเน้น) →
AADSTS70050: The Federated Managed Identity path is not properly formatted -
เครื่องหมายจุลภาคใน CN (ตัวอย่างเช่น
CN=Contoso, Inc.) →AADSTS700213: No matching federated identity record found
ข้อกําหนดเบื้องต้น
- การสมัครใช้งาน Azure ที่มีการเข้าถึงเพื่อเตรียมใช้งานข้อมูลประจําตัวที่จัดการโดยผู้ใช้ (UAMI) หรือการลงทะเบียนแอปพลิเคชัน
- เครื่องมือสําหรับปลั๊กอินหรือแพคเกจปลั๊กอิน:
- Integrated Development Environment (IDE) เช่น Visual Studio เพื่อสร้างปลั๊กอิน
- Plugin Registration Tool
- SignTool.exe (Sign Tool) เพื่อลงนามในส่วนประกอบปลั๊กอิน
- Power Platform CLI
- ใบรับรองที่ถูกต้องสำหรับการเซ็นชื่อใน แอสเซมบลีของปลั๊กอิน
ตั้งค่าข้อมูลประจำตัวที่มีการจัดการ
- สร้างการลงทะเบียนแอปใหม่หรือข้อมูลประจำตัวที่มีการจัดการที่ผู้ใช้กำหนด
- สร้าง ลงชื่อเข้าใช้ และลงทะเบียนปลั๊กอิน
- กำหนดค่าข้อมูลรับรองประจำตัวแบบสหพันธ์
- สร้างระเบียนของข้อมูลประจำตัวที่มีการจัดการใน Dataverse
- ให้สิทธิ์การเข้าถึงทรัพยากร Azure
- ตรวจสอบความถูกต้องของการรวม
ขั้นตอนที่ 1: สร้างการลงทะเบียนแอปหรือข้อมูลประจําตัวที่ได้รับการจัดการโดยผู้ใช้
สร้างข้อมูลประจําตัวที่จัดการโดยผู้ใช้กําหนดเองหรือแอปพลิเคชันใน Microsoft Entra ID:
- สําหรับข้อมูลประจําตัวของแอปที่เชื่อมโยงกับปลั๊กอิน (เพื่อให้คุณสามารถใช้นโยบาย Azure) ใช้การลงทะเบียนแอปพลิเคชัน
- สําหรับบริการหลัก เตรียมใช้งานข้อมูลประจําตัวที่มีการจัดการโดยผู้ใช้กําหนดเอง
โน้ต
จับภาพ ID แอปพลิเคชัน (ไคลเอ็นต์) และ ID ผู้เช่า — ที่คุณใช้ในขั้นตอนต่อไป
ขั้นตอนที่ 2: สร้าง ลงชื่อเข้าใช้ และลงทะเบียนปลั๊กอิน
สร้างปลั๊กอิน Visual Studio ใช้รหัสผู้เช่าจากขั้นตอนที่ 1 และขอบเขตเช่น
https://{OrgName}.crm*.dynamics.com/.defaultใช้ IManagedIdentityService เพื่อร้องขอโทเค็น:string AcquireToken(IEnumerable<string> scopes);ลงชื่อเข้าใช้ปลั๊กอินด้วยใบรับรองของคุณ
แพคเกจปลั๊กอิน (NuGet):
nuget sign YourPlugin.nupkg ` -CertificatePath MyCert.pfx ` -CertificatePassword "MyPassword" ` -Timestamper http://timestamp.digicert.comส่วนประกอบปลั๊กอิน (SignTool):
signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
โน้ต
ใช้ใบรับรองแบบลงนามด้วยตนเองสําหรับการพัฒนาหรือการทดสอบเท่านั้น อย่าใช้ใบรับรองแบบลงนามด้วยตนเองในการผลิต หากต้องการสร้างรายการหนึ่ง โปรดดู สร้างใบรับรองแบบลงนามด้วยตนเอง
ขั้นตอนที่ 3: กําหนดค่าข้อมูลประจําตัวภายนอก
ในพอร์ทัล Azure ให้เปิดข้อมูลประจําตัวที่จัดการโดยแอปหรือผู้ใช้กําหนดเอง (UAMI) ของคุณ ไปที่ ใบรับรองและข้อมูลลับ> ข้อมูลประจําตัวภายนอก>เพิ่มข้อมูลประจําตัว และเลือก ผู้ออกอื่น ๆ จากนั้นป้อน:
ผู้ออก —
https://login.microsoftonline.com/{tenantID}/v2.0ชนิด — ตัวระบุหัวเรื่องที่ชัดเจน
ตัวระบุหัวเรื่อง — ใช้รูปแบบสําหรับชนิดใบรับรองของคุณ:
ใบรับรองผู้ออกที่เชื่อถือได้ (การผลิต):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuerHash}/s/{subjectHash}ใบรับรองแบบลงนามด้วยตนเอง (เฉพาะการพัฒนาเท่านั้น):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/h/{hash}
การอ้างอิงเซกเมนต์
เซ็กเมนต์ รายละเอียด eid1เวอร์ชันรูปแบบข้อมูลประจําตัว c/pubรหัสระบบคลาวด์สําหรับระบบคลาวด์สาธารณะ GCC และสถานีวางจําหน่ายครั้งแรกใน GCC t/{encodedTenantId}ID ผู้เช่า ดู รับรหัสผู้เช่าที่เข้ารหัสแล้ว a/qzXoWDkuqUa3l6zM5mM0Rw/ใช้งานภายในเท่านั้น ไม่ต้องปรับเปลี่ยน n/pluginคอมโพเนนต์ปลั๊กอิน e/{environmentId}รหัสสภาพแวดล้อม i/{issuerHash}s/{subjectHash}แฮช SHA-256 Base64URL ของ DN แบบเต็มของผู้ออก/เจ้าของ ดูวิธี คำนวณค่าแฮชของผู้ออกและเจ้าของใบรับรอง h/{hash}SHA-256 ของใบรับรอง (เฉพาะที่เซ็นชื่อด้วยตนเองเท่านั้น)
คำนวณค่าแฮชของผู้ออกใบรับรองและเจ้าของใบรับรอง
นำสตริง DN แบบเต็มของผู้ออกใบรับรองและของเจ้าของใบรับรองตามที่ปรากฏบนใบรับรองมาแฮชด้วย SHA-256 แล้วเข้ารหัสแต่ละรายการเป็น Base64 แบบปลอดภัยสำหรับ URL รับสตริง DN ด้วย:
$cert = Get-PfxCertificate -FilePath "path\to\your.pfx"
Write-Host "Issuer: $($cert.Issuer)"
Write-Host "Subject: $($cert.Subject)"
คํานวณแฮช (PowerShell):
function Get-Sha256Base64Url {
param([string]$InputString)
$bytes = [System.Text.Encoding]::UTF8.GetBytes($InputString)
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$hash = $sha256.ComputeHash($bytes)
$base64 = [Convert]::ToBase64String($hash)
return $base64.Replace('+', '-').Replace('/', '_').TrimEnd('=')
}
$issuerHash = Get-Sha256Base64Url -InputString "<full issuer DN string>"
$subjectHash = Get-Sha256Base64Url -InputString "<full subject DN string>"
Write-Host "Issuer Hash: $issuerHash"
Write-Host "Subject Hash: $subjectHash"
หรือใน C#:
using System.Security.Cryptography;
using System.Text;
static string ComputeSha256Base64Url(string input)
{
using var sha256 = SHA256.Create();
byte[] hashBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(input));
return Convert.ToBase64String(hashBytes)
.Replace('+', '-')
.Replace('/', '_')
.TrimEnd('=');
}
ผลลัพธ์คือสตริงที่มี 43 อักขระเท่านั้นA-Zที่ประกอบด้วย , a-z0-9, -, และ_
สำคัญ
ใช้สตริง DN ที่รันไทม์ใช้จริง (พร็อพเพอร์ตี X509Certificate2.Issuer และ X509Certificate2.Subject ของ .NET) DN ที่มีรูปแบบต่างกันจะไม่ตรงกันและจะล้มเหลวพร้อมกับ AADSTS700213
โน้ต
สําหรับการปรับใช้ภายนอกระบบคลาวด์สาธารณะ ให้ตั้งค่าเฉพาะระบบคลาวด์ ดูที่ สภาพแวดล้อมระบบคลาวด์เฉพาะของ Azure
ขั้นตอนที่ 4: สร้างระเบียนข้อมูลประจําตัวที่มีการจัดการใน Dataverse
ส่งคําขอ HTTP POST โดยใช้ REST client สําหรับเวอร์ชัน 2 ให้ตั้งค่าversionเป็น2
POST https://<<orgURL>>/api/data/v9.0/managedidentities
{
"applicationid": "<<appId>>",
"managedidentityid": "<<anyGuid>>",
"credentialsource": 2,
"subjectscope": 1,
"tenantid": "<<tenantId>>",
"version": 2
}
จากนั้นจึงผูกแอสเซมบลีปลั๊กอิน (หรือแพคเกจ) เข้ากับระเบียน:
PATCH https://<<orgURL>>/api/data/v9.0/pluginassemblies(<<PluginAssemblyId>>)
{
"managedidentityid@odata.bind": "/managedidentities(<<ManagedIdentityGuid>>)"
}
สําหรับแพคเกจปลั๊กอิน ให้ใช้ pluginpackages(<<PluginPackageId>>) แทน
ขั้นตอนที่ 5: ให้สิทธิ์การเข้าถึงทรัพยากร Azure
ให้สิทธิ์การเข้าถึงข้อมูลเฉพาะตัว Azure ที่ผู้ใช้กําหนดเองหรือแอปพลิเคชันที่ต้องการ เช่น Azure Key Vault
ขั้นตอนที่ 6: ตรวจสอบการรวม
ทริกเกอร์ปลั๊กอินและยืนยันว่าได้รับโทเค็นและมีทรัพยากร Azure โดยไม่มีข้อมูลประจําตัวแยกต่างหาก
อัปเกรดเป็นเวอร์ชัน 2
ถ้าคุณมีปลั๊กอินบนเวอร์ชัน 0 หรือเวอร์ชัน 1 คุณสามารถย้ายไปยังเวอร์ชัน 2 ได้โดยไม่ต้องสร้างหรือลงทะเบียนปลั๊กอินใหม่หรือลงทะเบียนใหม่
ตัวเลือกที่ 1: Power Platform CLI
โน้ต
คํากริยาของข้อมูลประจําตัวที่จัดการโดย CLI ใช้ไม่ได้กับระบบปฏิบัติการที่ใช้ Linux หรือด้วยข้อมูลประจําตัวที่มีการจัดการโดยผู้ใช้ (UAMI) หาก CLI ใช้ไม่ได้กับใบรับรองของคุณ ให้ใช้ตัวเลือกที่ 2: ด้วยตนเอง
- ติดตั้ง Power Platform CLI เวอร์ชัน 2.8.1 หรือใหม่กว่า ดูติดตั้ง Microsoft Power Platform CLI
- สร้างโปรไฟล์การรับรองความถูกต้อง:
pac auth create - ตรวจสอบรุ่นปัจจุบัน:
pac managed-identity show-fic --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --version 2 - อัพ เกรด:
pac managed-identity upgrade-version --environment <orgUrl> --component-type PluginAssembly --component-id <pluginAssemblyId> --target-version 2 --confirm - เรียกใช้ปลั๊กอินเพื่อตรวจสอบความถูกต้อง
ตัวเลือกที่ 2: คู่มือ
การคำนวณแฮชเวอร์ชัน 2 ของผู้ออกและเจ้าของ ดู คำนวณแฮชของผู้ออกใบรับรองและเจ้าของใบรับรอง
เพิ่ม FIC ใหม่ด้วยรูปแบบตัวระบุหัวเรื่อง 2 เวอร์ชัน (ขั้นตอนที่ 3)
อัปเดตระเบียนข้อมูลประจําตัวที่มีการจัดการเป็นเวอร์ชัน 2:
PATCH https://<<orgURL>>/api/data/v9.0/managedidentities(<<ManagedIdentityId>>){ "version": 2 }เรียกใช้ปลั๊กอินและตรวจสอบว่าการรับโทเค็นสำเร็จ
ลบเวอร์ชันเก่า 1 FIC
โน้ต
เวอร์ชัน 0 ถูกยกเลิกการสนับสนุน การสนับสนุน CLI สําหรับการสร้างเวอร์ชัน 2 FIC อยู่ในระหว่างดําเนินการ
การอ้างอิง
รับรหัสผู้เช่าที่เข้ารหัสไว้
ID ผู้เช่าที่ถูกเข้ารหัสคือ GUID ของผู้เช่าที่แปลงเป็นไบต์และเข้ารหัสเป็น Base64URL (ไม่ใช่ Base64):
$tenantId = "<your-tenant-guid>"
$tenantGuid = [System.Guid]::Parse($tenantId)
$tenantBytes = $tenantGuid.ToByteArray()
$base64 = [System.Convert]::ToBase64String($tenantBytes)
$encodedTenantId = $base64.Replace('+', '-').Replace('/', '_').TrimEnd('=')
$encodedTenantId
สร้างใบรับรองแบบลงนามด้วยตนเอง
สําหรับการพัฒนาหรือการทดสอบเท่านั้น:
$params = @{
Type = 'Custom'
Subject = 'E=admin@contoso.com,CN=Contoso'
TextExtension = @(
'2.5.29.37={text}1.3.6.1.5.5.7.3.4',
'2.5.29.17={text}email=admin@contoso.com' )
KeyAlgorithm = 'RSA'
KeyLength = 2048
SmimeCapabilities = $true
CertStoreLocation = 'Cert:\CurrentUser\My'
}
New-SelfSignedCertificate @params
คํานวณการลงนาม {hash} ด้วยตนเอง (SHA-256 เหนือ .cer; ส่งออกจาก ตัว .pfx แรก ถ้าจําเป็น):
CertUtil -hashfile <CertificateFilePath> SHA256
$cert = Get-PfxCertificate -FilePath "path\to\your.pfx"
$cert.RawData | Set-Content -Encoding Byte -Path "extracted.cer"
สภาพแวดล้อมระบบคลาวด์ Azure แบบพิเศษ
ตั้งค่า ผู้ชมURL ผู้ออกและ คํานําหน้าหัวเรื่อง อย่างชัดเจนเมื่อปรับใช้นอกคลาวด์สาธารณะ GCC และสถานีการวางจําหน่ายครั้งแรกใน GCC
| ระบบคลาวด์ | กลุ่มเป้าหมาย | URL ผู้ออก | คํานําหน้าหัวเรื่อง |
|---|---|---|---|
| GCC High & DoD | api://AzureADTokenExchangeUSGov |
https://login.microsoftonline.us |
/eid1/c/usg |
| มูนเค้ก (จีน) | api://AzureADTokenExchangeChina |
https://login.partner.microsoftonline.cn |
/eid1/c/chn |
| US National (USNAT) | api://AzureADTokenExchangeUSNat |
https://login.microsoftonline.eaglex.ic.gov |
/eid1/c/uss |
| US Secure (USSec) | api://AzureADTokenExchangeUSSec |
https://login.microsoftonline.scloud |
/eid1/c/usn |
โน้ต
ค่า ผู้ชม ต้องตรงตามตัวพิมพ์ใหญ่-เล็ก สำหรับคลาวด์สาธารณะ, GCC และช่องทางการเผยแพร่รุ่นแรกใน GCC ค่าเริ่มต้นคือ Audience api://AzureADTokenExchange, Issuer https://login.microsoftonline.com, Subject prefix /eid1/c/pub.
คำถามที่ถามบ่อย (FAQs)
ฉันจะแก้ปัญหา AADSTS700213 ได้อย่างไร: ไม่พบระเบียนข้อมูลประจําตัวของสหพันธ์ที่ตรงกัน
ตัวระบุหัวเรื่องที่คํานวณในขณะทํางานไม่ตรงกับ FIC ใด ๆ บนแอป ตรวจสอบว่า:
- คุณกําหนดค่าและบันทึก FIC
- ผู้ออกและหัวเรื่องตรงกับรูปแบบในขั้นตอนที่ 3 คุณยังสามารถค้นหารูปแบบที่คาดไว้ในลำดับชั้นข้อผิดพลาด
- ระเบียน
versionคือ2และ FIC ใช้รูปแบบแฮชเวอร์ชัน 2 - แฮชจะถูกคํานวณจากสตริง DN ของรันไทม์ (
X509Certificate2.Issuer/X509Certificate2.Subject) - ผู้ออกคือ
https://login.microsoftonline.com/{tenantId}/v2.0และผู้ชมคือapi://AzureADTokenExchange(ตรงตามตัวพิมพ์ใหญ่-เล็ก)
ฉันจะแก้ไข AADSTS70050 ได้อย่างไร: เส้นทางข้อมูลประจําตัวที่จัดการโดยติดต่อกับภายนอกถูกจัดรูปแบบอย่างไม่ถูกต้อง
ตัวระบุชื่อเรื่องประกอบด้วยอักขระที่ตัวให้บริการข้อมูลประจําตัวไม่ยอมรับ — อักขระที่ไม่ใช่ ASCII ส่วนใหญ่ในใบรับรอง CN ภายใต้เวอร์ชัน 1 เวอร์ชัน 2 สร้างตัวระบุหัวเรื่องเฉพาะ ASCII และแก้ไขข้อผิดพลาดนี้
ฉันจะแก้ไขข้อผิดพลาด "ไม่สามารถเข้าถึงหรือเชื่อมต่อกับ Power Platform" ได้อย่างไร?
เพื่อให้แน่ใจว่าจุดสิ้นสุด Power Platform สามารถเข้าถึงและอนุญาตได้ โปรดดู URL ของ Power Platform และช่วงที่อยู่ IP