我正在尝试使用Microsoft GraphClient sdk获取添加到Azure活动目录中的用户的扩展属性。
即,我需要使用Graph客户端的以下命令结果。
使用Microsoft.Graph,版本= 3.4.0.0。
PS C:\WINDOWS\system32> Get-AzureADUser -ObjectId 50413382@wingtiptoys.com |select -ExpandProperty
ExtensionProperty
Key Value
--- -----
odata.metadata https://graph.windows.net/d29b7a9b-
6edb-4720-99a8-3c5c6c3eeeb0/$metadata#directoryObjects/@Element
odata.type Microsoft.DirectoryServices.User
createdDateTime
employeeId 50413382
onPremisesDistinguishedName
thumbnailPhoto@odata.mediaEditLink directoryObjects/8cc715a1-0698-4d1a-
8f49-441a84b6dbc4/Microsoft.DirectoryServices.User/thumbnailPhoto
thumbnailPhoto@odata.mediaContentType image/Jpeg
userIdentities []
extension_10a03227b5f146ad8a0087cf0bafd627_division
|30103611|50435526|50230396|10192257|86009851
extension_10a03227b5f146ad8a0087cf0bafd627_company wingtiptoys Inc.
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute10 GF
extension_10a03227b5f146ad8a0087cf0bafd627_employeeID 50413382
extension_10a03227b5f146ad8a0087cf0bafd627_cn 50413382
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute8 wingtiptoys Inc. Inc.
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute7 Chuck
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute6 US11
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute5 US1-Rochester, NY- Site
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute4 USC
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute2 Regular
extension_10a03227b5f146ad8a0087cf0bafd627_employeeType ARR
感谢您的帮助。
答案 0 :(得分:1)
对于这个问题,我们需要先知道一件事。
powershell命令在后端请求“ Azure AD图形api ”,而不是“ Microsoft图形api ”,因为我们可以看到主机为https://graph.windows.net....
。如果使用“ Microsoft graph api ”,则应为https://graph.microsoft.com...
。
您请求的扩展只能通过“ Azure AD graph api ”访问,而不能通过“ Microsoft graph api ”访问,尽管存在类似{{1 }}响应“ Microsoft graph api (获取用户)”。因此,我们需要使用Azure AD图SDK,而不要使用extension
。
根据Internet上的搜索,几乎找不到有关如何使用Azure AD图形SDK的信息。并且最新版本的sdk已在Microsoft.Graph
上进行了更新,因为Microsoft很长时间没有更新“ Azure AD图”。我不清楚如何使用Azure AD图SDK,因此建议您直接在代码中请求Azure AD图API。您可以在下面参考我的解决方案:
1。。您需要在AD中注册一个应用程序并向其添加权限(添加Azure AD图形权限而不是Microsoft图形权限)。
2。之后,我们可以通过以下代码请求Azure AD图形api:
10/17/2016
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleApp25
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Hello World!");
//request for the access token
HttpClient client = new HttpClient();
var values = new Dictionary<string, string>
{
{ "client_id", "<client_id>" },
{ "scope", "https://graph.windows.net/.default" },
{ "client_secret", "<client_secret>" },
{ "grant_type", "client_credentials" },
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token", content);
var responseString = await response.Content.ReadAsStringAsync();
//parse the responseString and get the access_token in it
dynamic json = JsonConvert.DeserializeObject(responseString);
var token = json.access_token;
//use the access token to request the azure ad graph api
HttpClient client1 = new HttpClient();
client1.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
var response1 = await client1.GetAsync("https://graph.windows.net/<tenant_id>/users/hury@xxx.onmicrosoft.com?api-version=1.6");
var responseString1 = await response1.Content.ReadAsStringAsync();
Console.WriteLine(responseString1);
}
}
}
包含用户的所有字段,您需要解析json并获取所需的扩展名。