У нас есть процесс очистки локальной службы AD, который требует удаления локальных учетных записей с сохранением единого входа в службы Azure. Это означает, что нам нужна возможность конвертировать учетные записи Azure в учетные записи, управляемые облаком.
Мое исследование (и успешное тестирование) показало, что этого можно добиться, переместив локального пользователя в подразделение, которое находится за пределами области dirsync.
Проблема в том, что, хотя это действие выполняет желаемое преобразование в «Управляемое облаком», оно также перемещает учетную запись Azure в «DeletedObjects».
Как программно восстановить облачную учетную запись из DeletedObjects? (Microsoft.Azure.ActiveDirectory.GraphClient версии 2.1.1)
public static bool RestoreDeletedUser(Guid ObjectId)
{
ActiveDirectoryClient activeDirectoryClient = AuthenticationHelper.GetActiveDirectoryClientAsApplication();
Task<IPagedCollection<IDirectoryObject>> userQuery = activeDirectoryClient.DeletedDirectoryObjects.Where(u => u.ObjectId.Equals(ObjectId.ToString())).ExecuteAsync();
userQuery.Wait();
IPagedCollection<IDirectoryObject> userQueryResult = userQuery.Result;
List<IDirectoryObject> user = userQueryResult.CurrentPage.ToList();
if (user.Count == 1)
{
user.First().restore(); //What do I do here? .restore is not a function.
}
return false;
}
Вы можете восстановить удаленных пользователей с помощью более новой версии API-интерфейс Microsoft Graphhttps://graph.microsoft.com
или ее SDK. Вскоре я расскажу о базовом API и связанном с ним коде.
Я думаю, что возможность восстановления НЕТ доступна со старым API графов Azure ADhttps://graph.windows.net
или его SDK, который использует ваш текущий код. Я нигде не нашел это явно заявленным, поэтому есть вероятность, что я ошибаюсь, но я говорю это, основываясь на двух вещах:
Блог Microsoft, посвященный сравнению старых версий Azure AD Graph и более новых API Microsoft Graph — Microsoft Graph или Azure AD Graph (см. сравнительную таблицу)
Документация по API Graph Azure AD. Я мог видеть некоторые возможности восстановления, упомянутые в объекте приложения здесь, но ничего в отношении пользователя. Просматривая также клиентский код SDK, я не смог найти никаких способов восстановления.
В целом, в любом случае настоятельно рекомендуется использовать более новый API Microsoft Graph вместо старого API Azure AD Graph, как вы можете прочитать в упомянутой выше ссылке.
Как восстановить пользователя с помощью Microsoft Graph API
Использование клиентского SDK для .NET
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
await graphClient.Directory.DeletedItems["{object-id}"]
.Restore()
.Request()
.PostAsync()
Базовый API — Восстановить удаленный элемент
POST https://graph.microsoft.com/v1.0/directory/deletedItems/{id}/restore
Это было определенно не очевидно при поиске. Например: поиск Nuget для «Microsoft Graph» ничего не возвращает, но «Microsoft.Graph» возвращает. Большая часть документации Googled приводит вас к лазурному графику. Я надеюсь, что по мере постепенного отказа от лазурного графа многие ссылки будут обновлены, чтобы показать предпочтения. Спасибо.