恢复已删除的目录Azure Active Driectory对象-Azure Graph API

时间:2019-05-24 21:45:26

标签: c# azure azure-active-directory azure-ad-graph-api

我们有一个针对本地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;
    }

1 个答案:

答案 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(请看比较表)

    enter image description here

  • 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