Bagikan melalui


Menetapkan lisensi kepada pengguna dengan API Pusat Mitra

Cara menetapkan lisensi kepada pengguna pelanggan.

Prasyarat

  • Kredensial seperti yang dijelaskan dalam autentikasi Pusat Mitra. Skenario ini hanya mendukung autentikasi dengan kredensial App+User.
  • Pengidentifikasi pengguna pelanggan. ID ini mengidentifikasi pengguna yang akan menetapkan lisensi.
  • Pengidentifikasi SKU produk untuk lisensi.

Periksa peran hak istimewa admin yang didelegasikan terperinci (GDAP) Anda

Anda memerlukan setidaknya salah satu peran GDAP berikut:

  • Administrator Lisensi
  • Administrator Pengguna
  • Penulis Direktori

Menetapkan lisensi melalui kode

Saat menetapkan lisensi kepada pengguna, Anda harus memilih dari kumpulan SKU berlangganan pelanggan. Pertama, Anda perlu mengidentifikasi produk yang ingin Anda tetapkan, lalu mendapatkan ID SKU produk untuk setiap produk tersebut guna membuat penugasan. Setiap instans SubscribedSku berisi properti ProductSku dari mana Anda dapat mereferensikan objek ProductSku dan mendapatkan ID .

Berikut adalah langkah-langkah untuk menetapkan lisensi melalui kode:

  1. Inisialisasi instance dari objek LicenseAssignment. Anda menggunakan objek ini untuk menentukan SKU produk dan paket layanan yang akan ditetapkan.

    LicenseAssignment license = new LicenseAssignment();
    
  2. Isi properti objek seperti yang ditunjukkan dalam kode berikut. Kode ini mengasumsikan bahwa Anda sudah memiliki ID SKU produk, dan bahwa semua paket layanan yang tersedia ditetapkan (yaitu, tidak ada yang dikecualikan).

    license.SkuId = selectedProductSkuId;
    license.ExcludedPlans = null;
    
  3. Jika Anda tidak memiliki ID SKU produk, Anda perlu mengambil koleksi SKU berlangganan dan mendapatkan ID SKU produk dari salah satunya. Berikut adalah contoh jika Anda mengetahui nama SKU produk.

    var customerSubscribedSkus = partnerOperations.Customers.ById(selectedCustomerId).SubscribedSkus.Get();
    var sku = customerSubscribedSkus.Items.Where(n => n.ProductSku.Name == "Office 365 Enterprise E3").First();
    license.SkuId = sku.ProductSku.Id;
    license.ExcludedPlans = null;
    
  4. Selanjutnya, buat contoh daftar jenis baru LicenseAssignment, dan tambahkan objek lisensi. Anda dapat menetapkan lebih dari satu lisensi dengan menambahkan masing-masing satu per satu ke daftar. Lisensi yang disertakan dalam daftar ini harus berasal dari grup lisensi yang sama.

    List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
    licenseList.Add(license);
    
  5. Buat instans LicenseUpdate dan tetapkan daftar penetapan lisensi ke properti LicensesToAssign.

    LicenseUpdate updateLicense = new LicenseUpdate();
    updateLicense.LicensesToAssign = licenseList;
    
  6. Panggil metode Buat atau BuatAsync dan teruskan objek pembaruan lisensi seperti yang ditunjukkan di bagian tentang cara menetapkan lisensi.

    var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);
    

C#

Untuk menetapkan lisensi kepada pengguna pelanggan, pertama-tama instansiasi objek LicenseAssignment, dan isi properti Skuid dan ExcludedPlans. Anda menggunakan objek ini untuk menentukan SKU produk yang akan ditetapkan dan paket layanan yang akan dikecualikan. Selanjutnya, buat contoh daftar jenis baru LicenseAssignment, dan tambahkan objek lisensi ke daftar. Kemudian buat instans LicenseUpdate dan tetapkan daftar penetapan lisensi ke properti LicensesToAssign.

Selanjutnya, gunakan metodeIAggregatePartner.Customers.ById dengan ID pelanggan untuk mengidentifikasi pelanggan, dan metode Users.ById dengan ID pengguna untuk mengidentifikasi pengguna. Kemudian dapatkan antarmuka untuk operasi pembaruan lisensi pengguna pelanggan dari properti LicenseUpdates.

Terakhir, panggil metode Create atau CreateAsync dan berikan objek pembaruan lisensi untuk menetapkan lisensi.

// IAggregatePartner partnerOperations;
// string selectedCustomerUserId;
// string selectedCustomerId;
// string selectedProductSkuId;

// Instantiate and populate a LicenseAssignment object.
LicenseAssignment license = new LicenseAssignment();
license.SkuId = selectedProductSkuId;
license.ExcludedPlans = null;

// Instantiate a list of licenses to assign and add the license to it.
List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
licenseList.Add(license);

// Instantiate a LicenseUpdate object and add the list of licenses to assign.
LicenseUpdate updateLicense = new LicenseUpdate();
updateLicense.LicensesToAssign = licenseList;

// Update the user licenses.
var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);

Sampel: aplikasi uji Console. Project: Sampel SDK Pusat Mitra Class: CustomerUserAssignLicenses.cs

Permintaan REST

Sintaks permintaan

Metode Meminta URI
POST {baseURL}/v1/customers/{customer-id}/users/{user-id}/licenseupdates HTTP/1.1

Parameter URI

Gunakan parameter jalur berikut untuk mengidentifikasi pelanggan dan pengguna.

Nama Jenis Diperlukan Deskripsi
id pelanggan tali Ya ID berformat GUID yang mengidentifikasi pelanggan.
id pengguna tali Ya ID berformat GUID yang mengidentifikasi pengguna.

Header permintaan

Untuk informasi selengkapnya, lihat Partner Center header REST.

Isi permintaan

Sertakan sumber daya LicenseUpdate dalam isi permintaan yang menentukan lisensi yang akan ditetapkan.

Contoh permintaan

POST https://api.partnercenter.microsoft.com/v1/customers/0c39d6d5-c70d-4c55-bc02-f620844f3fd1/users/554526aa-cf5e-46fa-95df-98dbc55d8a1e/licenseupdates HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: a37d3009-665d-4e12-b76e-1aa10cf80140
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 183
Expect: 100-continue

{
    "LicensesToAssign": [{
            "ExcludedPlans": null,
            "SkuId": "f8a1db68-be16-40ed-86d5-cb42ce701560"
        }
    ],
    "LicensesToRemove": null,
    "LicenseWarnings": null,
    "Attributes": {
        "ObjectType": "LicenseUpdate"
    }
}

Penting

Per Juni 2023, rilis terbaru Partner Center .NET SDK 3.4.0 sekarang diarsipkan. Anda dapat mengunduh rilis SDK-nya dari GitHub, bersama dengan berkas readme yang berisi informasi bermanfaat.

Mitra didorong untuk terus menggunakan REST API Partner Center.

Tanggapan REST

Jika berhasil, kode status respons HTTP 201 dikembalikan dan isi respons berisi sumber daya LicenseUpdate dengan informasi lisensi.

Kode kesalahan dan keberhasilan respons

Setiap respons dilengkapi dengan kode status HTTP yang menunjukkan keberhasilan atau kegagalan dan informasi penelusuran kesalahan lainnya. Gunakan alat pelacakan jaringan untuk membaca kode ini, jenis kesalahan, dan parameter lainnya. Untuk daftar lengkapnya, lihat kode kesalahan REST Pusat Mitra .

Contoh respons (berhasil)

HTTP/1.1 201 Created
Content-Length: 139
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: a37d3009-665d-4e12-b76e-1aa10cf80140
MS-CV: 5AnzcZQrvUqCq3kd.0
MS-ServerId: 030020525
Date: Thu, 20 Apr 2017 21:50:39 GMT

{
    "licensesToAssign": [{
            "skuId": "f8a1db68-be16-40ed-86d5-cb42ce701560"
        }
    ],
    "licenseWarnings": [],
    "attributes": {
        "objectType": "LicenseUpdate"
    }
}

Contoh respons (lisensi tidak tersedia)

HTTP/1.1 400 Bad Request
Content-Length: 341
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: f4f3b748-8b22-4d07-a5a1-dceb32824192
MS-CV: 5npA0K22CUmWPOzB.0
MS-ServerId: 102030524
Date: Thu, 20 Apr 2017 22:12:36 GMT

{
    "code": 60012,
    "description": "We are sorry, it looks like you have run out of licenses. Buy more licenses, and then try again.",
    "data": ["LicenseQuotaExceededException : Subscription with Account 0c39d6d5-c70d-4c55-bc02-f620844f3fd1 and SKU f8a1db68-be16-40ed-86d5-cb42ce701560 does not have any available licenses left."],
    "source": "PartnerFD"
}

Contoh respons (token tidak valid)

HTTP/1.1 400 Bad Request
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: f0caf048-380c-4d6f-968a-3ccce01e11c1
MS-CV: 6npA0K22CUmWPOzC.0
MS-ServerId: 102045524
Date: Thu, 20 Apr 2023 21:12:36 GMT

{
    "code": 900316,
    "description": "Partner token is not allowed in license management calls. Please call with Partner Access Token. To learn more, see /partner-center/developer/enable-secure-app-model#get-access-token",
    "source": "PartnerFD"
}

Contoh respons (Masalah Kebijakan Akses Berkondisi)

HTTP/1.1 403 Forbidden
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: f0caf048-380c-4d6f-968a-3ccce01e11c1
MS-CV: 6npA0K22CUmWPOzC.0
MS-ServerId: 102045524
Date: Thu, 20 Apr 2023 21:12:36 GMT

{
    "code": 900309,
    "description": "Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. Learn more at /azure/active-directory/conditional-access/concept-conditional-access-users-groups.",
    "source": "PartnerFD"
}