Delen via


Licenties toewijzen aan een gebruiker via PartnerCentrum-API's

Licenties toewijzen aan een klantgebruiker.

Vereisten

  • Referenties zoals beschreven in verificatie in partnercentrum. Dit scenario biedt alleen ondersteuning voor verificatie met app+gebruikersreferenties.

  • Een gebruikers-id van de klant. Met deze id wordt de gebruiker geïdentificeerd aan wie de licentie moet worden toegewezen.

  • Een product-SKU-id die het product voor de licentie identificeert.

GDAP-rollen

U hebt ten minste een van de volgende GDAP-rollen nodig:

  • Licentiebeheerder
  • Gebruikersbeheerder
  • Adreslijstschrijvers

Licenties toewijzen via code

Wanneer u licenties toewijst aan een gebruiker, moet u kiezen uit de verzameling geabonneerde SKU's van de klant. Nadat u vervolgens de producten hebt geïdentificeerd die u wilt toewijzen, moet u de product-SKU-id voor elk product verkrijgen om de toewijzingen te kunnen maken. Elk exemplaar van SubscribedSku bevat een ProductSku-eigenschap waaruit u naar het Object ProductSku kunt verwijzen en de id kunt ophalen.

Hier volgen de stappen voor het toewijzen van licenties via code:

  1. Instantieer een LicenseAssignment-object. U gebruikt dit object om de product-SKU en serviceabonnementen op te geven die u wilt toewijzen.

    LicenseAssignment license = new LicenseAssignment();
    
  2. Vul de objecteigenschappen in zoals hieronder wordt weergegeven. In deze code wordt ervan uitgegaan dat u al de product-SKU-id hebt en dat alle beschikbare serviceabonnementen worden toegewezen (dat wil gezegd: geen wordt uitgesloten).

    license.SkuId = selectedProductSkuId;
    license.ExcludedPlans = null;
    
  3. Als u de product-SKU-id niet hebt, moet u de verzameling geabonneerde SKU's ophalen en de product-SKU-id ophalen uit een van deze SKU's. Hier volgt een voorbeeld als u de naam van de product-SKU kent.

    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. Maak vervolgens een nieuwe lijst met het type LicenseAssignment en voeg het licentieobject toe. U kunt meer dan één licentie toewijzen door elk afzonderlijk aan de lijst toe te voegen. De licenties in deze lijst moeten afkomstig zijn van dezelfde licentiegroep.

    List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
    licenseList.Add(license);
    
  5. Maak een LicenseUpdate-exemplaar en wijs de lijst met licentietoewijzingen toe aan de eigenschap LicensesToAssign.

    LicenseUpdate updateLicense = new LicenseUpdate();
    updateLicense.LicensesToAssign = licenseList;
    
  6. Roep de methode Create of CreateAsync aan en geef het licentie-updateobject door, zoals hieronder wordt weergegeven om de licenties toe te wijzen.

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

C#

Als u een licentie wilt toewijzen aan een klantgebruiker, instantieert u eerst een LicenseAssignment-object en vult u de eigenschappen Skuid en ExcludedPlans in. U gebruikt dit object om de product-SKU op te geven die moet worden toegewezen en serviceplannen die moeten worden uitgesloten. Maak vervolgens een nieuwe lijst van het type LicenseAssignment en voeg het licentieobject toe aan de lijst. Maak vervolgens een LicenseUpdate-exemplaar en wijs de lijst met licentietoewijzingen toe aan de eigenschap LicensesToAssign.

Gebruik vervolgens de methode IAggregatePartner.Customers.ById met de klant-id om de klant te identificeren en de methode Users.ById met de gebruikers-id om de gebruiker te identificeren. Haal vervolgens een interface op voor updatebewerkingen voor gebruikerslicenties van de klant vanuit de eigenschap LicenseUpdates.

Roep tot slot de methode Create of CreateAsync aan en geef het licentie-updateobject door om de licentie toe te wijzen.

// 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);

Voorbeeld: consoletest-app. Project: Voorbeeldklasse partnercentrum-SDK: CustomerUserAssignLicenses.cs

REST-aanvraag

Aanvraagsyntaxis

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

URI-parameters

Gebruik de volgende padparameters om de klant en gebruiker te identificeren.

Name Type Vereist Beschrijving
klant-id tekenreeks Ja Een id met guid-indeling waarmee de klant wordt geïdentificeerd.
user-id tekenreeks Ja Een id met guid-indeling waarmee de gebruiker wordt geïdentificeerd.

Aanvraagheaders

Zie Rest-headers in Partnercentrum voor meer informatie.

Aanvraagtekst

Neem een LicenseUpdate-resource op in de aanvraagbody waarmee de licenties worden opgegeven die moeten worden toegewezen.

Aanvraagvoorbeeld

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: c73c9570-c352-459e-98a3-dafe4bd8c821
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"
    }
}

Belangrijk

Vanaf juni 2023 wordt de nieuwste Versie van Partner Center .NET SDK 3.4.0 gearchiveerd. U kunt de SDK-release downloaden van GitHub, samen met een leesmij-bestand dat nuttige informatie bevat.

Partners worden aangemoedigd om de REST API's van partnercentrum te blijven gebruiken.

REST-antwoord

Als dit lukt, wordt een HTTP-antwoordstatuscode 201 geretourneerd en bevat de hoofdtekst van het antwoord een LicenseUpdate-resource met de licentiegegevens.

Geslaagde antwoorden en foutcodes

Elk antwoord wordt geleverd met een HTTP-statuscode die aangeeft dat de fout is geslaagd of mislukt en aanvullende informatie over foutopsporing. Gebruik een hulpprogramma voor netwerktracering om deze code, het fouttype en aanvullende parameters te lezen. Zie rest-foutcodes in Partnercentrum voor de volledige lijst.

Antwoordvoorbeeld (geslaagd)

HTTP/1.1 201 Created
Content-Length: 139
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
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"
    }
}

Antwoordvoorbeeld (licentie is niet beschikbaar)

HTTP/1.1 400 Bad Request
Content-Length: 341
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
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"
}

Antwoordvoorbeeld (ongeldig token)

HTTP/1.1 400 Bad Request
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c5359db2-fb21-485c-90b1-0a2c3b484783
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 https://learn.microsoft.com/partner-center/developer/enable-secure-app-model#get-access-token",
    "source": "PartnerFD"
}

Antwoordvoorbeeld (probleem met beleid voor voorwaardelijke toegang)

HTTP/1.1 403 Forbidden
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c5359db2-fb21-485c-90b1-0a2c3b484783
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 https://learn.microsoft.com/azure/active-directory/conditional-access/concept-conditional-access-users-groups.",
    "source": "PartnerFD"
}