Teilen über


Zuweisen von Lizenzen zu einem Benutzer über Partner Center-APIs

Zuweisen von Lizenzen zu einem Kundenbenutzer

Voraussetzungen

  • Anmeldeinformationen, wie unter Partner Center-Authentifizierung beschrieben. In diesem Szenario wird Authentifizierung nur mit App- und Benutzeranmeldeinformationen unterstützt.

  • Ein Benutzerbezeichner des Kunden. Diese ID identifiziert den Benutzer, dem die Lizenz zugewiesen werden soll.

  • Ein Produkt-SKU-Bezeichner, der das Produkt für die Lizenz identifiziert.

GDAP-Rollen

Sie benötigen mindestens eine der folgenden GDAP-Rollen:

  • Lizenzadministrator
  • Benutzeradministrator
  • Verzeichnis schreiben

Zuweisen von Lizenzen über Code

Wenn Sie einem Benutzer Lizenzen zuweisen, müssen Sie aus der Sammlung der abonnierten SKUs des Kunden wählen. Nachdem Sie die Produkte identifiziert haben, die Sie zuweisen möchten, müssen Sie die Produkt-SKU-ID für jedes Produkt abrufen, um die Zuordnungen vorzunehmen. Jede SubscribedSku-Instanz enthält eine ProductSku-Eigenschaft, aus der Sie auf das ProductSku-Objekt verweisen und die ID abrufen können.

Hier sind die Schritte zum Zuweisen von Lizenzen über Code:

  1. Instanziieren Sie ein LicenseAssignment-Objekt. Sie verwenden dieses Objekt, um die zuzuweisenden Produkt-SKU- und Dienstpläne anzugeben.

    LicenseAssignment license = new LicenseAssignment();
    
  2. Füllen Sie die Objekteigenschaften wie unten dargestellt auf. Dieser Code geht davon aus, dass Sie bereits über die Produkt-SKU-ID verfügen und dass alle verfügbaren Dienstpläne zugewiesen werden (d. a. keine wird ausgeschlossen).

    license.SkuId = selectedProductSkuId;
    license.ExcludedPlans = null;
    
  3. Wenn Sie nicht über die Produkt-SKU-ID verfügen, müssen Sie die Sammlung abonnierter SKUs abrufen und die Produkt-SKU-ID aus einem dieser SkUs abrufen. Hier ist ein Beispiel, wenn Sie den Produkt-SKU-Namen kennen.

    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. Instanziieren Sie als Nächstes eine neue Liste vom Typ "LicenseAssignment", und fügen Sie das Lizenzobjekt hinzu. Sie können mehrere Lizenzen zuweisen, indem Sie die einzelnen Lizenzen zur Liste hinzufügen. Die in dieser Liste enthaltenen Lizenzen müssen aus derselben Lizenzgruppe stammen.

    List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
    licenseList.Add(license);
    
  5. Erstellen Sie eine LicenseUpdate-Instanz, und weisen Sie der LicensesToAssign-Eigenschaft die Liste der Lizenzzuweisungen zu.

    LicenseUpdate updateLicense = new LicenseUpdate();
    updateLicense.LicensesToAssign = licenseList;
    
  6. Rufen Sie die Create- oder CreateAsync-Methode auf, und übergeben Sie das Lizenzaktualisierungsobjekt wie unten dargestellt, um die Lizenzen zuzuweisen.

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

C#

Um einem Kundenbenutzer eine Lizenz zuzuweisen, instanziieren Sie zuerst ein LicenseAssignment-Objekt, und füllen Sie die Eigenschaften Skuid und ExcludedPlans auf. Mit diesem Objekt geben Sie die Produkt-SKU an, um auszuschließende Zuweisungs- und Dienstpläne anzugeben. Instanziieren Sie als Nächstes eine neue Liste vom Typ "LicenseAssignment", und fügen Sie der Liste das Lizenzobjekt hinzu. Erstellen Sie dann eine LicenseUpdate-Instanz, und weisen Sie der LicensesToAssign-Eigenschaft die Liste der Lizenzzuweisungen zu.

Verwenden Sie als Nächstes die IAggregatePartner.Customers.ById-Methode mit der Kunden-ID, um den Kunden zu identifizieren, und die Users.ById-Methode mit der Benutzer-ID, um den Benutzer zu identifizieren. Rufen Sie dann eine Schnittstelle zu Benutzerlizenzaktualisierungsvorgängen aus der LicenseUpdates-Eigenschaft ab.

Rufen Sie schließlich die Create - oder CreateAsync-Methode auf, und übergeben Sie das Lizenzaktualisierungsobjekt, um die Lizenz zuzuweisen.

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

Beispiel: Konsolentest-App. Projekt: Partner Center SDK Samples Class: CustomerUserAssignLicenses.cs

REST-Anforderung

Anforderungssyntax

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

URI-Parameter

Verwenden Sie die folgenden Pfadparameter, um den Kunden und den Benutzer zu identifizieren.

Name Type Erforderlich Beschreibung
Kunden-ID Zeichenfolge Ja Eine GUID-formatierte ID, die den Kunden identifiziert.
user-id Zeichenfolge Ja Eine GUID-formatierte ID, die den Benutzer identifiziert.

Anforderungsheader

Weitere Informationen finden Sie unter Partner Center-REST-Header.

Anforderungstext

Fügen Sie eine LicenseUpdate-Ressource in den Anforderungstext ein, der die zuzuweisenden Lizenzen angibt.

Anforderungsbeispiel

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"
    }
}

Wichtig

Ab Juni 2023 ist jetzt die neueste Partner Center .NET SDK-Version 3.4.0 archiviert. Sie können das SDK-Release von GitHub zusammen mit einer Infodatei herunterladen, die nützliche Informationen enthält.

Partnern wird empfohlen, weiterhin die Partner Center-REST-APIs zu verwenden.

REST-Antwort

Bei erfolgreicher Ausführung wird ein HTTP-Antwortstatuscode 201 zurückgegeben, und der Antworttext enthält eine LicenseUpdate-Ressource mit den Lizenzinformationen.

Erfolgs- und Fehlercodes der Antwort

Jede Antwort enthält einen HTTP-Statuscode, der Aufschluss darüber gibt, ob der Vorgang erfolgreich war, sowie ggf. zusätzliche Debuginformationen. Verwende ein Tool für die Netzwerkablaufverfolgung, um diesen Code, den Fehlertyp und zusätzliche Parameter zu lesen. Die vollständige Liste finden Sie unter Partner Center-REST-Fehlercodes.

Beispiel für eine Antwort (Erfolg)

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"
    }
}

Antwortbeispiel (Lizenz ist nicht verfügbar)

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"
}

Antwortbeispiel (ungültiges 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"
}

Antwortbeispiel (Problem mit Richtlinie für bedingten Zugriff)

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"
}