Как получить значение Sku Id лицензии Office 365 Python

Используя msal в Python для создания токена, я пытаюсь назначить пользователю лицензию.

      import msal

client_id = xxx
client_secret= xxx
tenant_id = xxx
authority = f"https://login.microsoftonline.com/{tenant_id}"
scopes = ['https://graph.microsoft.com/.default']

app = msal.ConfidentialClientApplication(client_id, client_secret, authority=authority)

result = app.acquire_token_for_client(scopes)
access_token = result['access_token']
print(access_token)

Где я могу найти идентификатор SKU лицензии? Нигде в Портале я его не могу найти. Или есть способ получить его с помощью вызова графика или PowerShell?

Получив SkuId, я хочу назначить эту лицензию пользователю. Это документ о передаче лицензии, который мне удалось получить, но он был утерян в части SkuId:

https://learn.microsoft.com/en-us/graph/api/user-assignlicense?view=graph-rest-1.0&tabs=http

1 ответ

Чтобы получить значение идентификаторов SKU лицензий Office 365, вы можете использовать приведенный ниже вызов API Graph:

      GET https://graph.microsoft.com/v1.0/subscribedSkus?$select=skuPartNumber,skuId

Я зарегистрировал одно приложение Azure AD и предоставил разрешения API :

введите сюда описание изображения

Я использовал приведенный ниже код Python, чтобы получить токен доступа и распечатать идентификаторы SKU существующих лицензий в организации:

      import msal
import requests

client_id = "appID"
client_secret= "secret"
tenant_id = "tenantID"
authority = f"https://login.microsoftonline.com/{tenant_id}"
scopes = ['https://graph.microsoft.com/.default']

app = msal.ConfidentialClientApplication(client_id, client_secret, authority=authority)

result = app.acquire_token_for_client(scopes)
access_token = result['access_token']
print(access_token)

url = "https://graph.microsoft.com/v1.0/subscribedSkus?$select=skuPartNumber,skuId"
headers = {
    "Authorization": "Bearer " + access_token
}

response = requests.get(url, headers=headers)
data = response.json()

for sku in data['value']:
    print("\nSKU Part Number:", sku['skuPartNumber'])
    print("SKU ID:", sku['skuId'])
    print()

Ответ:

введите сюда описание изображения

Вы можете назначить лицензию пользователю с помощью приведенного ниже кода Python, добавив несколько строк:

      import msal
import requests

client_id = "appID"
client_secret= "secret"
tenant_id = "tenantID"
authority = f"https://login.microsoftonline.com/{tenant_id}"
scopes = ['https://graph.microsoft.com/.default']

app = msal.ConfidentialClientApplication(client_id, client_secret, authority=authority)

result = app.acquire_token_for_client(scopes)
access_token = result['access_token']
print(access_token)

url = "https://graph.microsoft.com/v1.0/users/xxxxxxxxx/assignLicense"
headers = {
    "Authorization": "Bearer " + access_token,
    "Content-type": "application/json"
}

payload = {
    "addLicenses": [
        {
            "skuId": "c7df2760-2c81-4ef7-b578-5b5392b571df"
        }
    ],
    "removeLicenses": []
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

Ответ:

введите сюда описание изображения

Чтобы подтвердить это, я проверил то же самое на Портале, гдеOffice 365 E5лицензия успешно присвоена пользователю:

введите сюда описание изображения

Ссылка: Список подписчиков — Microsoft Graph v1.0

Другие вопросы по тегам