簡體   English   中英

如何使用Azure AD Graph API獲取當前用戶的登錄名/用戶名

[英]How to get Login / username using Azure AD Graph API for current user

誰能告訴我在查詢中寫些什么以獲得登錄用戶AD用戶名? 不是GivenName,FamilyName,displayname ----我需要domain ** me.username **,我有域,所以只有用戶名。 這非常適合檢索用戶的廣告組,因此我應該更改以獲得用戶名。

public async Task<List<Groups>> GetAdGroups(string authority, string resource, string clientId, string returnUri)
    {
        JObject jResult = null;
        AuthenticationResult authResult = null;
        var authContext = new AuthenticationContext(authority);
        if (authContext.TokenCache.ReadItems().Any())
        {
            authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
        }
        var platformParams = new PlatformParameters((Activity)Forms.Context);
        authResult = await authContext.AcquireTokenAsync(resource, clientId, new Uri(returnUri), platformParams);
        var uri = new Uri(returnUri);
        string graphRequest = String.Format(CultureInfo.InvariantCulture, "{0}/{1}/users/{2}/memberOf?api-version=1.5", ServiceConstants.graphResourceUri, ServiceConstants.tenant, authResult.UserInfo.UniqueId);
        HttpClient client = new HttpClient();
        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, graphRequest);
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);

        HttpResponseMessage response = await client.SendAsync(request);
        List<Groups> memberOf = new List<Groups>();
        string content = await response.Content.ReadAsStringAsync();
        jResult = JObject.Parse(content);

        if (jResult["odata.error"] != null)
        {
            memberOf.Add(new Groups { id = "Error", displayName = (string)jResult["odata.error"]["message"]["value"] });
            return memberOf;
        }
        if (jResult["value"] == null)
        {
            memberOf.Add(new Groups { id = "Error", displayName = "Unknown Error." });
            return memberOf;
        }
        foreach (JObject result in jResult["value"])
        {
            memberOf.Add(
                new Groups
                {
                    id = (string)result["objectId"],
                    displayName = (string)result["displayName"]
                });
        }
        return memberOf;
    }

希望有人能幫忙。 最好的問候,克里斯蒂安。

若要獲取Azure AD帳戶的登錄名,我們可以從用戶對象獲取userPrincipalName 以下是來自Entity和復雜類型參考的關於此屬性的描述。

UPN是基於Internet標准RFC 822的用戶的Internet樣式的登錄名。按照慣例,這應映射到用戶的電子郵件名。 通用格式為“ alias @ domain”。 對於工作或學校帳戶,該域必須存在於租戶的已驗證域集合中。 創建工作或學校帳戶時需要此屬性; 對於本地帳戶是可選的。

這是使用Azure Graph客戶端獲取此屬性的代碼,供您參考:

//client is the instance of ActiveDirectoryClient
client.Me.ExecuteAsync().Result.UserPrincipalName

如果直接調用了Azure Graph REST,則可以引用以下請求:

GET: https://graph.windows.net/me?api-version=1.6

暫無
暫無

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

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