Bagikan melalui


Mulai cepat provisi masuk berbasis API dengan cURL

Pengantar

cURL adalah alat baris perintah populer, gratis, sumber terbuka, yang digunakan oleh pengembang API, dan tersedia secara default pada Windows 10/11. Tutorial ini menjelaskan bagaimana Anda dapat dengan cepat menguji provisi masuk berbasis API dengan cURL.

Prasyarat

Mengunggah data pengguna ke API provisi masuk

  1. Ambil client_id dan client_secret perwakilan layanan yang memiliki akses ke API provisi masuk.
  2. Gunakan alur pemberian client_credentials OAuth untuk mendapatkan token akses. Ganti variabel [yourClientId], [yourClientSecret] dan [yourTenantId] dengan nilai yang berlaku untuk penyiapan Anda dan jalankan perintah cURL berikut. Salin nilai token akses yang dihasilkan
    curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=[yourClientId]&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=[yourClientSecret]&grant_type=client_credentials" "https://login.microsoftonline.com/[yourTenantId]/oauth2/v2.0/token"
    
  3. Salin permintaan massal dengan Skema Pengguna SCIM Enterprise dan simpan konten dalam file yang disebut scim-bulk-upload-users.json.
  4. Ganti variabel [InboundProvisioningAPIEndpoint] dengan titik akhir API provisi yang terkait dengan aplikasi provisi Anda. [AccessToken] Gunakan nilai dari langkah sebelumnya dan jalankan perintah curl berikut untuk mengunggah permintaan massal ke titik akhir API provisi.
    curl -v "[InboundProvisioningAPIEndpoint]" -d @scim-bulk-upload-users.json -H "Authorization: Bearer [AccessToken]" -H "Content-Type: application/scim+json"
    
  5. Setelah berhasil diunggah, Anda akan menerima kode respons HTTP 202 Diterima.
  6. Layanan provisi mulai memproses payload permintaan massal segera dan Anda dapat melihat detail provisi dengan mengakses log provisi aplikasi provisi masuk.

Memverifikasi pemrosesan payload permintaan massal

  1. Masuk ke pusat admin Microsoft Entra sebagai setidaknya Administrator Aplikasi.

  2. Telusuri ke MICROSOFT Entra ID -> Aplikasi -> Aplikasi perusahaan.

  3. Di bawah semua aplikasi, gunakan kotak teks filter pencarian untuk menemukan dan membuka aplikasi provisi berbasis API Anda.

  4. Buka bilah Provisi. Halaman arahan menampilkan status eksekusi terakhir.

  5. Klik Lihat log provisi untuk membuka bilah log provisi. Atau, Anda dapat mengklik opsi menu Monitor -> Log provisi.

    Screenshot of provisioning logs in menu.

  6. Klik rekaman apa pun di log provisi untuk melihat detail pemrosesan lainnya.

  7. Layar detail log provisi menampilkan semua langkah yang dijalankan untuk pengguna tertentu.

    • Di bawah langkah Impor dari API, lihat detail data pengguna yang diekstrak dari permintaan massal.
    • Langkah Cocokkan pengguna memperlihatkan detail kecocokan pengguna berdasarkan pengidentifikasi yang cocok. Jika kecocokan pengguna terjadi, maka layanan provisi melakukan operasi pembaruan. Jika tidak ada kecocokan pengguna, maka layanan provisi melakukan operasi buat.
    • Langkah Tentukan apakah Pengguna berada dalam cakupan menunjukkan detail evaluasi filter cakupan. Secara default, semua pengguna diproses. Jika Anda telah mengatur filter cakupan (misalnya, hanya memproses pengguna milik departemen Penjualan), detail evaluasi filter cakupan ditampilkan dalam langkah ini.
    • Langkah Pengguna Provisi memanggil langkah pemrosesan akhir dan perubahan yang diterapkan ke akun pengguna.
    • Gunakan tab Properti yang dimodifikasi untuk melihat pembaruan atribut.

Lampiran

Lihat bagian ini untuk informasi tentang permintaan massal dengan Skema Pengguna Perusahaan SCIM.

Permintaan massal dengan Skema Pengguna SCIM Enterprise

Permintaan massal yang ditunjukkan di bawah ini menggunakan Skema Pengguna Inti dan Pengguna Perusahaan standar SCIM.

Badan permintaan

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
    {
        "method": "POST",
        "bulkId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
            "externalId": "701984",
            "userName": "bjensen@example.com",
            "name": {
                "formatted": "Ms. Barbara J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Barbara",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Babs Jensen",
            "nickName": "Babs",
            "emails": [
            {
              "value": "bjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Universal City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91608",
              "country": "USA",
              "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5555",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Guide",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                 "employeeNumber": "701984",
                 "costCenter": "4130",
                 "organization": "Universal Studios",
                 "division": "Theme Park",
                 "department": "Tour Operations",
                 "manager": {
                     "value": "89607",
                     "displayName": "John Smith"
                 }
            }
        }
    },
    {
        "method": "POST",
        "bulkId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
            "externalId": "701985",
            "userName": "Kjensen@example.com",
            "name": {
                "formatted": "Ms. Kathy J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Kathy",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Kathy Jensen",
            "nickName": "Kathy",
            "emails": [
            {
              "value": "kjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Oracle City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91618",
              "country": "USA",
              "formatted": "100 Oracle City Plaza\nHollywood, CA 91618 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5545",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Lead",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                 "employeeNumber": "701985",
                 "costCenter": "4130",
                 "organization": "Universal Studios",
                 "division": "Theme Park",
                 "department": "Tour Operations",
                 "manager": {
                     "value": "701984",
                     "displayName": "Barbara Jensen"
                 }
            }
        }
    }
],
    "failOnErrors": null
}

Langkah berikutnya