Обновление свойств объекта user. Не все свойства могут быть обновлены участниками или гостями с разрешениями по умолчанию без ролей администратора. Сравните разрешения по умолчанию для участника и гостя, чтобы узнать, какими свойствами они могут управлять.
Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
Тип разрешения
Разрешения с наименьшими привилегиями
Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись)
Чтобы обновить конфиденциальные свойства пользователей, такие как accountEnabled, mobilePhone и другие сообщения Электронной почты для пользователей с привилегированными ролями администратора, выполните следующие действия:
В делегированных сценариях приложению должно быть назначено делегированное разрешение Directory.AccessAsUser.All , а вызывающий пользователь должен иметь более высокую привилегированную роль администратора, как указано в разделе Кто может выполнять конфиденциальные действия.
В сценариях только для приложений приложению должна быть назначена более высокая роль привилегированного администратора, как указано в разделе Кто может выполнять конфиденциальные действия.
Ваша личная учетная запись Майкрософт должна быть привязана к клиенту Microsoft Entra, чтобы обновить профиль с делегированным разрешением User.ReadWrite для личной учетной записи Майкрософт.
Для обновления свойства удостоверений требуется разрешение User.ManageIdentities.All . Кроме того, добавление локальной учетной записи B2C к существующему объекту пользователя не допускается, если только объект пользователя не содержит идентификатор локальной учетной записи.
Укажите в тексте запроса только значения обновляемых свойств. Существующие свойства, которые не включены в текст запроса, сохраняют свои предыдущие значения или пересчитываются на основе изменений других значений свойств.
В следующей таблице указаны свойства, которые можно обновить.
Свойство
Тип
Описание
aboutMe
String
Свободное текстовое поле, где пользователь может рассказать о себе.
accountEnabled
Логический
Если учетная запись обеспечена — true, в противном случае — false. Это свойство обязательно указывать при создании пользователя. Глобальный администратор, которому назначено делегированное разрешение Directory.AccessAsUser.All, может обновить состояние accountEnabled для всех администраторов в клиенте.
День рождения пользователя. Тип Timestamp представляет сведения о времени и дате с использованием формата ISO 8601 (всегда применяется формат UTC). Например, значение полуночи 1 января 2014 г. в формате UTC: 2014-01-01T00:00:00Z.
businessPhones
Коллекция строк
Номера телефонов пользователя. ПРИМЕЧАНИЕ. Несмотря на то что это коллекция строк, для этого свойства можно задать только один номер.
city
String
Город, в котором находится пользователь.
CompanyName
String
Имя компании, с которым связан пользователь. Это свойство может быть полезно для описания компании внешнего пользователя. Максимальная длина: 64 символа.
Устанавливает, получено ли согласие для несовершеннолетних. Допустимые значения: null, Granted, Denied и NotRequired. Дополнительные сведения см. в разделе Определения свойств юридических возрастных групп.
country
String
Страна или регион, в котором находится пользователь, например US или UK.
Открытый сложный тип, который содержит значение настраиваемого атрибута безопасности, назначенного объекту каталога.
Чтобы обновить это свойство, вызывающему субъекту должна быть назначена роль администратора назначения атрибутов и должно быть предоставлено разрешение CustomSecAttributeAssignment.ReadWrite.All.
department
String
Название отдела, в котором работает пользователь.
displayName
String
Имя пользователя, отображаемое в адресной книге. Обычно это сочетание имени, отчества и фамилии пользователя. Это свойство является обязательным при создании пользователя и его невозможно очистить во время обновлений.
employeeId
String
Идентификатор сотрудника, назначенный пользователю организацией. Максимальная длина составляет 16 символов.
employeeType
String
Фиксирует тип корпоративного работника. Например, Employee, Contractor, Consultant или Vendor. Возвращается только с помощью оператора $select.
givenName;
String
Простое имя пользователя.
employeeHireDate
DateTimeOffset
Дата найма пользователя. Тип Timestamp представляет сведения о времени и дате с использованием формата ISO 8601 (всегда применяется формат UTC). Например, значение полуночи 1 января 2014 г. в формате UTC: 2014-01-01T00:00:00Z.
employeeLeaveDateTime
DateTimeOffset
Дата и время, когда пользователь покинет организацию или покинет ее. Тип метки времени представляет сведения о дате и времени в формате ISO 8601 и всегда находится в формате UTC. Например, значение полуночи 1 января 2014 г. в формате UTC: 2014-01-01T00:00:00Z.
В делегированных сценариях вызывающий пользователь должен иметь роль глобального администратора, а вызывающему приложению назначены делегированные разрешения User.Read.All и User-LifeCycleInfo.ReadWrite.All .
Представляет данные организации (например, division и costCenter), связанные с пользователем.
interests;
Коллекция строк
Список интересов пользователя.
jobTitle
String
Должность пользователя.
mail
String
SMTP-адрес пользователя, например jeff@contoso.com. Изменения этого свойства также обновят коллекцию proxyAddresses пользователя, чтобы включить значение в качестве SMTP-адреса. Для Azure AD учетных записей B2C это свойство можно обновить до 10 раз с помощью уникальных SMTP-адресов. Не удается обновить до null.
mailNickname
String
Почтовый псевдоним для пользователя. Это свойство должно быть указано при создании пользователя.
Содержит свойства extensionAttribute 1–15 для пользователя. Отдельные атрибуты расширения не могут быть выбраны или фильтруемы. Для пользователей onPremisesSyncEnabled исходным центром управления для этого набора свойств является локальная среда, и он предназначен только для чтения. Эти атрибуты расширения также называются настраиваемыми атрибутами 1–15 Exchange.
onPremisesImmutableId
String
Это свойство используется для связывания учетной записи пользователя локальная служба Active Directory с объектом Microsoft Entra пользователя. Это свойство должно быть указано при создании новой учетной записи пользователя в Graph, если вы используете федеративный домен для свойства userPrincipalName (UPN) пользователя. Важно: Символы $ и _ нельзя использовать при указании этого свойства.
otherMails
Коллекция строк
Список дополнительных адресов электронной почты для пользователя. Например: ["bob@contoso.com", "Robert@fabrikam.com"].
passwordPolicies
String
Задает политики паролей для пользователя. Это свойство представляет собой перечисление с возможным значением DisableStrongPassword. Оно позволяет использовать менее надежные пароли, чем предусмотрено политикой по умолчанию. Вы также можете указать значение DisablePasswordExpiration. Их можно указать вместе; например: DisablePasswordExpiration, DisableStrongPassword.
Задает профиль пароля для пользователя. Профиль содержит пароль пользователя. Пароль в профиле должен соответствовать минимальным требованиям, указанным в свойстве passwordPolicies. По умолчанию требуется надежный пароль. Рекомендуется всегда задавать для параметра forceChangePasswordNextSignIn значение true. Его нельзя использовать для федеративных пользователей.
При делегированном доступе вызывающему приложению должен быть назначено делегированное разрешение от имени вошедшего пользователя Directory.AccessAsUser.All. При доступе только к приложениям вызывающему приложению должно быть назначено разрешение User.ReadWrite.All и по крайней мере роль администратора пользователейMicrosoft Entra.
pastProjects
Коллекция строк
Список предыдущих проектов пользователя.
postalCode
String
Почтовый индекс адреса пользователя. Формат почтового индекса зависит от страны или региона пользователя. В США для этого атрибута используется ZIP-код.
preferredLanguage
String
Предпочитаемый язык для пользователя. Он должен быть представлен в формате ISO 639-1, например en-US.
responsibilities;
Коллекция строк
Список обязанностей пользователя.
schools
Коллекция строк
Список для пользователя для перечисления учебных заведений, которые они посещали.
skills
Коллекция строк
Список навыков пользователя.
state
String
Область, республика, край или округ в адресе пользователя.
streetAddress
String
Почтовый адрес места работы пользователя.
surname
String
Фамилия пользователя.
usageLocation
String
Двухбуквенный код страны (по стандарту ISO 3166). Необходим для пользователей, которым будут назначены лицензии, в связи с законодательным требованием проверять доступность служб в разных странах. Примеры: US, JP и GB. Значение null не допускается.
userPrincipalName
String
Имя участника-пользователя. Имя участника-пользователя — это имя для входа в интернет-стиле для пользователя, основанное на стандарте Интернета RFC 822. В соответствии с соглашением оно должно указывать на имя пользователя для электронной почты. Общий формат: псевдоним@домен. При этом домен должен входить в коллекцию проверенных доменов клиента. Доступ к проверенным доменам клиента можно получить с помощью свойства verifiedDomains объекта organization. ПРИМЕЧАНИЕ. Это свойство не может содержать знаки акцента. Разрешены только следующие символы: A - Z, a - z, 0 - 9, ' . - _ ! # ^ ~. Полный список разрешенных символов см. в политиках имен пользователей.
userType
String
Строковое значение, с помощью которого можно классифицировать типы пользователей в каталоге, например Member и Guest.
Примечание.
Следующие свойства не могут быть обновлены приложением только с разрешениями приложения: aboutMe, birthday, employeeHireDate, interests, mySite, pastProjects, responsibilities, schools, и skills.
Чтобы обновить следующие свойства, необходимо указать их в своем запросе PATCH, не включив другие свойства: aboutMe, день рождения, интересы, mySite, pastProjects, обязанности, учебные заведения и навыки.
Управление расширениями и связанными данными
Используйте этот API для управления каталогом, схемой и открытыми расширениями и их данными для пользователей следующим образом:
Добавление, обновление и хранение данных в расширениях для существующего пользователя
Для расширений каталогов и схем удалите все сохраненные данные, задав для свойства пользовательского расширения значение null. Для открытых расширений используйте API удаления открытых расширений.
Отклик
В случае успешного выполнения этот метод возвращает код отклика 204 No Content.
Пример
Пример 1. Обновление свойств вошедшего пользователя
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
BusinessPhones = new List<string>
{
"+1 425 555 0109",
},
OfficeLocation = "18/2111",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.PatchAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
LinkedList<String> businessPhones = new LinkedList<String>();
businessPhones.add("+1 425 555 0109");
user.setBusinessPhones(businessPhones);
user.setOfficeLocation("18/2111");
User result = graphClient.me().patch(user);
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
BusinessPhones = new List<string>
{
"+1 425 555 0109",
},
OfficeLocation = "18/2111",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
LinkedList<String> businessPhones = new LinkedList<String>();
businessPhones.add("+1 425 555 0109");
user.setBusinessPhones(businessPhones);
user.setOfficeLocation("18/2111");
User result = graphClient.users().byUserId("{user-id}").patch(user);
Пример 3. Обновление passwordProfile пользователя и сброс пароля
В приведенном ниже примере показан запрос на сброс пароля другого пользователя. Рекомендуется всегда задавать для параметра forceChangePasswordNextSignIn значение true.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
PasswordProfile = new PasswordProfile
{
ForceChangePasswordNextSignIn = false,
Password = "xWwvJ]6NMw+bWH-d",
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc users patch --user-id {user-id} --body '{\
"passwordProfile": {\
"forceChangePasswordNextSignIn": false,\
"password": "xWwvJ]6NMw+bWH-d"\
}\
}\
'
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
PasswordProfile passwordProfile = new PasswordProfile();
passwordProfile.setForceChangePasswordNextSignIn(false);
passwordProfile.setPassword("xWwvJ]6NMw+bWH-d");
user.setPasswordProfile(passwordProfile);
User result = graphClient.users().byUserId("{user-id}").patch(user);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\User;
use Microsoft\Graph\Generated\Models\PasswordProfile;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new User();
$passwordProfile = new PasswordProfile();
$passwordProfile->setForceChangePasswordNextSignIn(false);
$passwordProfile->setPassword('xWwvJ]6NMw+bWH-d');
$requestBody->setPasswordProfile($passwordProfile);
$result = $graphServiceClient->users()->byUserId('user-id')->patch($requestBody)->wait();
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
AdditionalData = new Dictionary<string, object>
{
{
"ext55gb1l09_msLearnCourses" , new
{
CourseType = "Admin",
}
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc users patch --user-id {user-id} --body '{\
"ext55gb1l09_msLearnCourses": {\
"courseType": "Admin"\
}\
}\
'
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
ext55gb1l09MsLearnCourses = new ();
ext55gb1l09MsLearnCourses.setCourseType("Admin");
additionalData.put("ext55gb1l09_msLearnCourses", ext55gb1l09MsLearnCourses);
user.setAdditionalData(additionalData);
User result = graphClient.users().byUserId("{user-id}").patch(user);
Чтобы удалить значение расширения схемы из объекта user, задайте для свойства ext55gb1l09_msLearnCourses значение null.
Отклик
HTTP/1.1 204 No Content
Пример 5. Назначение пользовательского атрибута безопасности со строковым значением пользователю
В следующем примере показано, как назначить пользователю настраиваемый атрибут безопасности со строковым значением.
Набор атрибутов: Engineering
Атрибут: ProjectDate
Тип данных атрибута: строка
Значение атрибута: "2022-10-01"
Чтобы назначить настраиваемые атрибуты безопасности, вызывающему субъекту должна быть присвоена роль администратора назначения атрибутов и должно быть предоставлено разрешение CustomSecAttributeAssignment.ReadWrite.All.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new User
{
CustomSecurityAttributes = new CustomSecurityAttributeValue
{
AdditionalData = new Dictionary<string, object>
{
{
"Engineering" , new
{
OdataType = "#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
ProjectDate = "2022-10-01",
}
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
User user = new User();
CustomSecurityAttributeValue customSecurityAttributes = new CustomSecurityAttributeValue();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
engineering = new ();
engineering.setOdataType("#Microsoft.DirectoryServices.CustomSecurityAttributeValue");
engineering.setProjectDate("2022-10-01");
additionalData.put("Engineering", engineering);
customSecurityAttributes.setAdditionalData(additionalData);
user.setCustomSecurityAttributes(customSecurityAttributes);
User result = graphClient.users().byUserId("{user-id}").patch(user);
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.