Mengonfigurasi provisi menggunakan Microsoft Graph API
Pusat admin Microsoft Entra adalah cara mudah untuk mengonfigurasi provisi untuk aplikasi individual satu per satu. Tetapi jika Anda membuat beberapa—atau bahkan ratusan—instans aplikasi, atau memigrasikan konfigurasi aplikasi dari satu lingkungan ke lingkungan lain, akan lebih mudah untuk mengotomatiskan pembuatan dan konfigurasi aplikasi dengan API Microsoft Graph. Artikel ini menguraikan cara mengotomatisasi konfigurasi penyediaan melalui API. Metode ini biasanya digunakan untuk aplikasi seperti Amazon Web Services.
Artikel ini mengilustrasikan proses dengan API di titik akhir beta Microsoft Graph dan Microsoft Graph Explorer; API serupa juga tersedia di titik akhir Microsoft Graph v1.0. Untuk contoh mengonfigurasi provisi dengan Graph v1.0 dan PowerShell, lihat langkah 6-13 mengonfigurasi sinkronisasi lintas penyewa menggunakan PowerShell atau Microsoft Graph API.
Gambaran umum langkah-langkah untuk menggunakan API Microsoft Graph untuk mengotomatiskan konfigurasi penyediaan
Langkah | Detail |
---|---|
Langkah 1. Membuat aplikasi galeri | Masuk ke klien API Mengambil templat aplikasi galeri Membuat aplikasi galeri |
Langkah 2. Membuat pekerjaan penyediaan berdasarkan templat | Mengambil templat untuk konektor provisi Buat pekerjaan penyediaan |
Langkah 3. Otorisasi akses | Menguji koneksi ke aplikasi Simpan kredensial |
Langkah 4. Mulai provisi | Mulai pekerjaan |
Langkah 5. Pantau penyediaan | Periksa status pekerjaan provisi Ambil log penyediaan |
Jika Anda memprovisikan ke aplikasi lokal, maka Anda juga perlu menginstal dan mengonfigurasi agen provisi, dan menetapkan agen provisi ke aplikasi.
Langkah 1. Membuat aplikasi galeri
Masuk ke Microsoft Graph Explorer (direkomendasikan), Postman, atau klien API lain yang Anda gunakan
- Mulai Microsoft Graph Explorer.
- Pilih tombol "Masuk dengan Microsoft" dan masuk dengan pengguna dengan peran Administrator Aplikasi.
- Setelah berhasil masuk, Anda akan melihat detail akun pengguna di panel sebelah kiri.
Mengambil pengidentifikasi templat aplikasi galeri
Aplikasi di galeri aplikasi Microsoft Entra masing-masing memiliki templat aplikasi yang menjelaskan metadata untuk aplikasi tersebut. Dengan menggunakan templat ini, Anda dapat membuat contoh aplikasi dan prinsip layanan di penyewa Anda untuk manajemen. Mengambil pengidentifikasi untuk templat aplikasi untuk Akses Akun Tunggal AWS dan dari respon, catat nilai dari properti id untuk digunakan nanti dalam tutorial ini.
Permintaan
GET https://graph.microsoft.com/beta/applicationTemplates?$filter=displayName eq 'AWS Single-Account Access'
Respons
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"id": "8b1025e4-1dd2-430b-a150-2ef79cd700f5",
"displayName": "AWS Single-Account Access",
"homePageUrl": "http://aws.amazon.com/",
"supportedSingleSignOnModes": [
"password",
"saml",
"external"
],
"supportedProvisioningTypes": [
"sync"
],
"logoUrl": "https://az495088.vo.msecnd.net/app-logo/aws_215.png",
"categories": [
"developerServices"
],
"publisher": "Amazon",
"description": "Federate to a single AWS account and use SAML claims to authorize access to AWS IAM roles. If you have many AWS accounts, consider using the AWS Single Sign-On gallery application instead."
}
Membuat aplikasi galeri
Gunakan ID templat yang diambil untuk aplikasi Anda pada langkah terakhir untuk membuat instans aplikasi dan perwakilan layanan di penyewa Anda.
Permintaan
POST https://graph.microsoft.com/beta/applicationTemplates/{applicationTemplateId}/instantiate
Content-type: application/json
{
"displayName": "AWS Contoso"
}
Respons
HTTP/1.1 201 OK
Content-type: application/json
{
"application": {
"objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"applicationTemplateId": "8b1025e4-1dd2-430b-a150-2ef79cd700f5",
"displayName": "AWS Contoso",
"homepage": "https://signin.aws.amazon.com/saml?metadata=aws|ISV9.1|primary|z",
"replyUrls": [
"https://signin.aws.amazon.com/saml"
],
"logoutUrl": null,
"samlMetadataUrl": null,
},
"servicePrincipal": {
"objectId": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"appDisplayName": "AWS Contoso",
"applicationTemplateId": "8b1025e4-1dd2-430b-a150-2ef79cd700f5",
"appRoleAssignmentRequired": true,
"displayName": "My custom name",
"homepage": "https://signin.aws.amazon.com/saml?metadata=aws|ISV9.1|primary|z",
"replyUrls": [
"https://signin.aws.amazon.com/saml"
],
"servicePrincipalNames": [
"93653dd4-aa3a-4323-80cf-e8cfefcc8d7d"
],
"tags": [
"WindowsAzureActiveDirectoryIntegratedApp"
],
}
}
Langkah 2. Membuat pekerjaan penyediaan berdasarkan templat
Mengambil templat untuk konektor penyediaan
Aplikasi di galeri yang diaktifkan untuk penyediaan memiliki templat untuk mengalirkan konfigurasi. Gunakan permintaan di bawah ini untuk mengambil templat untuk konfigurasi penyediaan. Perhatikan bahwa Anda harus memberikan ID. ID adalah sumber daya servicePrincipal, yang dibuat pada langkah sebelumnya.
Permintaan
GET https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/templates
Respons
HTTP/1.1 200 OK
{
"value": [
{
"id": "aws",
"factoryTag": "aws",
"schema": {
"directories": [],
"synchronizationRules": []
}
}
]
}
Buat pekerjaan penyediaan
Untuk mengaktifkan penyediaan, Anda harus terlebih dahulu membuat pekerjaan. Gunakan permintaan berikut untuk membuat pekerjaan penyediaan. Gunakan templateId dari langkah sebelumnya saat menentukan templat yang akan digunakan untuk pekerjaan tersebut.
Permintaan
POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs
Content-type: application/json
{
"templateId": "aws"
}
Respons
HTTP/1.1 201 OK
Content-type: application/json
{
"id": "{jobId}",
"templateId": "aws",
"schedule": {
"expiration": null,
"interval": "P10675199DT2H48M5.4775807S",
"state": "Disabled"
},
"status": {
"countSuccessiveCompleteFailures": 0,
"escrowsPruned": false,
"synchronizedEntryCountByType": [],
"code": "NotConfigured",
"lastExecution": null,
"lastSuccessfulExecution": null,
"lastSuccessfulExecutionWithExports": null,
"steadyStateFirstAchievedTime": "0001-01-01T00:00:00Z",
"steadyStateLastAchievedTime": "0001-01-01T00:00:00Z",
"quarantine": null,
"troubleshootingUrl": null
}
}
Langkah 3. Mengotorisasi akses
Uji koneksi ke aplikasi
Uji koneksi dengan aplikasi pihak ketiga. Contoh berikut adalah untuk aplikasi yang memerlukan rahasia klien dan token rahasia. Setiap aplikasi memiliki persyaratan tersendiri. Aplikasi sering menggunakan alamat dasar sebagai tempat rahasia klien. Untuk menentukan kredensial apa yang diperlukan aplikasi Anda, buka halaman konfigurasi penyediaan untuk aplikasi Anda, dan dalam mode pengembang, klik koneksi uji. Lalu lintas jaringan akan menunjukkan parameter yang digunakan untuk kredensial. Untuk daftar lengkap kredensial, lihat synchronizationJob: validateCredentials. Sebagian besar aplikasi, seperti Azure Databricks, mengandalkan BaseAddress dan SecretToken. BaseAddress disebut sebagai URL penyewa di pusat admin Microsoft Entra.
Permintaan
POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/validateCredentials
{
"credentials": [
{
"key": "ClientSecret", "value": "xxxxxxxxxxxxxxxxxxxxx"
},
{
"key": "SecretToken", "value": "xxxxxxxxxxxxxxxxxxxxx"
}
]
}
Respons
HTTP/1.1 204 No Content
Simpan kredensial Anda
Mengonfigurasi provisi mengharuskan membangun kepercayaan antara MICROSOFT Entra ID dan aplikasi untuk mengotorisasi Microsoft Entra agar memiliki kemampuan untuk memanggil aplikasi pihak ketiga. Contoh berikut khusus untuk aplikasi yang memerlukan rahasia klien dan token rahasia. Setiap aplikasi memiliki persyaratan tersendiri. Tinjau dokumentasi API untuk melihat opsi yang tersedia.
Permintaan
PUT https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/secrets
{
"value": [
{
"key": "ClientSecret", "value": "xxxxxxxxxxxxxxxxxxxxx"
},
{
"key": "SecretToken", "value": "xxxxxxxxxxxxxxxxxxxxx"
}
]
}
Respons
HTTP/1.1 204 No Content
Langkah 4: Mulai pekerjaan penyediaan
Sekarang setelah pekerjaan penyediaan dikonfigurasi, gunakan perintah berikut untuk memulai pekerjaan.
Permintaan
POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/start
Respons
HTTP/1.1 204 No Content
Langkah 5. Pantau penyediaan
Memantau status pekerjaan penyediaan
Sekarang setelah pekerjaan provisi berjalan, gunakan perintah berikut untuk melacak kemajuan. Setiap pekerjaan sinkronisasi dalam respons mencakup status siklus provisi saat ini serta statistik hingga saat ini seperti jumlah pengguna dan grup yang telah dibuat dalam sistem target.
Permintaan
GET https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs
Respons
HTTP/1.1 200 OK
Content-type: application/json
{ "value": [
{
"id": "{jobId}",
"templateId": "aws",
"schedule": {
"expiration": null,
"interval": "P10675199DT2H48M5.4775807S",
"state": "Disabled"
},
"status": {
"countSuccessiveCompleteFailures": 0,
"escrowsPruned": false,
"synchronizedEntryCountByType": [],
"code": "Paused",
"lastExecution": null,
"lastSuccessfulExecution": null,
"progress": [],
"lastSuccessfulExecutionWithExports": null,
"steadyStateFirstAchievedTime": "0001-01-01T00:00:00Z",
"steadyStateLastAchievedTime": "0001-01-01T00:00:00Z",
"quarantine": null,
"troubleshootingUrl": null
},
"synchronizationJobSettings": [
{
"name": "QuarantineTooManyDeletesThreshold",
"value": "500"
}
]
}
]
}
Memantau kejadian penyediaan menggunakan log penyediaan
Selain memantau status pekerjaan penyediaan, Anda dapat menggunakan log penyediaan untuk membuat kueri semua peristiwa yang terjadi. Misalnya, kueri untuk pengguna tertentu dan menentukan apakah pengguna berhasil disediakan.
Permintaan
GET https://graph.microsoft.com/beta/auditLogs/provisioning
Respons
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#auditLogs/provisioning",
"value": [
{
"id": "gc532ff9-r265-ec76-861e-42e2970a8218",
"activityDateTime": "2019-06-24T20:53:08Z",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"cycleId": "44576n58-v14b-70fj-8404-3d22tt46ed93",
"changeId": "eaad2f8b-e6e3-409b-83bd-e4e2e57177d5",
"action": "Create",
"durationInMilliseconds": 2785,
"sourceSystem": {
"id": "0404601d-a9c0-4ec7-bbcd-02660120d8c9",
"displayName": "Azure Active Directory",
"details": {}
},
"targetSystem": {
"id": "cd22f60b-5f2d-1adg-adb4-76ef31db996b",
"displayName": "AWS Contoso",
"details": {
"ApplicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"ServicePrincipalId": "chc46a42-966b-47d7-9774-576b1c8bd0b8",
"ServicePrincipalDisplayName": "AWS Contoso"
}
},
"initiatedBy": {
"id": "",
"displayName": "Azure AD Provisioning Service",
"initiatorType": "system"
}
]
}
]
}
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk