簡體   English   中英

Azure AD:如何在不使用任何庫的情況下訪問Azure AD Graph API

[英]Azure AD: How to access Azure AD Graph API without using any library

我已經開發了一個asp.net MVC 4項目。當前,我正計划訪問Azure Graph API以獲取AD用戶數據(用戶的訪問導航屬性,參考鏈接: Azure Rest API參考 )。

我已經檢查了Azure AD Graph助手庫,但是使用此庫我無法訪問導航屬性(即:訪問User的manager屬性)

任何幫助表示贊賞。

默認情況下,當您獲取某個實體(在我們的示例中為“用戶”)時,並非所有導航屬性都將被加載。 您應該使用Expand(..)。 下面我給出一個示例,如何將Manager分配給User以及如何獲取User's Manager導航屬性(省略了一些基礎設施的細微差別):

public async Task<Result> AssingUserManager(string userUpn, string managerUpn)
{
    try
    {
        var user = (AD.User)await ADClient.Users
            .Where(x => x.UserPrincipalName == userUpn)
            .ExecuteSingleAsync();

        var manager = (AD.User)await ADClient.Users
            .Where(x => x.UserPrincipalName == managerUpn)
            .ExecuteSingleAsync();

        user.Manager = manager;

        await manager.UpdateAsync();
        return Result.Ok();
    }
    catch (Exception ex)
    {
        return Result.Fail(new Error("Failed to assign manager", null, ex));
    }
}

public async Task<Result<User>> GetUserManager(string upn)
{
    try
    {
        var user = (AD.User)await ADClient.Users
                    .Where(x => x.UserPrincipalName == upn)
                    .Expand(x => x.Manager)
                    .ExecuteSingleAsync();

        var manager = user.Manager as AD.User;
        if (manager != null)
        {
            return Result.Ok(ConvertToModel(manager));
        }

        return Result.Fail<User>(new Error("Manager not found for specified user", null));
    }
    catch (Exception ex)
    {
        return Result.Fail<User>(new Error("Failed to get user's manager", null, ex));
    }
}

另外,請注意,在更新圖形時,我是通過對被分配為管理員的用戶而不是已設置其Manager屬性的用戶(從此源獲取 )調用UpdateAsync來進行的

您可以直接通過HttpClient或任何其他常規的HTTP請求生成類輕松點擊Graph。 您只需要遵守OData約定即可訪問特定實體並過濾結果。 對於某些常見查詢,您可以在沒有任何圖形庫的情況下直接嘗試看看http://msdn.microsoft.com/zh-cn/library/azure/jj126255.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM