我们有一个针对本地AD的清理过程,该过程要求删除预置帐户,同时保留Azure单一登录服务。 这意味着我们需要具有将Azure帐户转换为“云托管”帐户的功能。
我的研究(以及成功的测试)已经表明,可以通过将本地用户移至目录同步范围之外的OU来完成此操作。
问题在于,尽管此操作确实完成了向“ Cloud Managed”的转换,但也将azure帐户移至“ DeletedObjects”
如何以编程方式从DeletedObjects中还原仅云帐户? (Microsoft.Azure.ActiveDirectory.GraphClient v 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;
}
答案 0 :(得分:2)
您可以通过更新的 Microsoft Graph API https://graph.microsoft.com
或其SDK恢复已删除的用户。稍后我将介绍基础API和相关代码。
我认为较旧的 Azure AD Graph API https://graph.windows.net
或它的SDK(现在的代码正在使用)无法提供恢复功能。我在任何地方都没有明确指出这一点,因此我可能对此有误,但是我基于两件事说这句话:
Microsoft的比较博客,其中包含较旧的Azure AD Graph和较新的Microsoft Graph API-Microsoft Graph or the Azure AD Graph(请看比较表)
Azure AD Graph API文档-我可以看到应用程序对象here提到的某些还原功能,但与User无关。同样查看客户端SDK代码,我找不到任何还原方法。
总的来说,强烈建议使用更新的Microsoft Graph API而不是较旧的Azure AD Graph API,您可以在上述链接中阅读。
如何使用Microsoft Graph API还原用户
使用.NET Client SDK
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
await graphClient.Directory.DeletedItems["{object-id}"]
.Restore()
.Request()
.PostAsync()
底层API-Restore deleted item
POST https://graph.microsoft.com/v1.0/directory/deletedItems/{id}/restore