Как получить значение 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
лицензия успешно присвоена пользователю: