使用 Microsoft 图形客户端 sdk 的 AAD 用户扩展属性
AAD user extension properties using Microsoft graph client sdk
我正在尝试使用 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
感谢任何帮助。
对于这个问题,在做之前我们需要知道一件事。
powershell 命令在后端请求“Azure AD 图 api”,但不请求“Microsoft 图 api" 因为我们可以看到主机是 https://graph.windows.net....
。如果使用“Microsoft graph api”,应该是https://graph.microsoft.com...
.
您请求的扩展只能通过“Azure AD graph api”访问,不能通过“Microsoft graph [=53=”访问]”虽然在“Microsoft graph api(get user)”的响应中有一个像 extension
的 属性。所以我们需要使用 Azure AD 图形 SDK 而不是使用 Microsoft.Graph
.
根据网上搜索,关于如何使用Azure AD graph SDK的信息很少。并且在10/17/2016
更新了最新版本的sdk,因为微软很久没有更新“Azure AD graph”了。我不清楚如何使用 Azure AD 图形 SDK,所以我建议您直接在代码中请求 Azure AD 图形 api。您可以参考下面我的解决方案:
1.您需要在AD中注册一个应用程序并为其添加权限(添加Azure AD图形权限但不添加Microsoft图形权限)。
2. 之后,我们可以通过下面的代码请求Azure AD图api:
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);
}
}
}
responseString1
包含用户的所有字段,你需要解析json得到你想要的扩展
我正在尝试使用 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
感谢任何帮助。
对于这个问题,在做之前我们需要知道一件事。
powershell 命令在后端请求“Azure AD 图 api”,但不请求“Microsoft 图 api" 因为我们可以看到主机是 https://graph.windows.net....
。如果使用“Microsoft graph api”,应该是https://graph.microsoft.com...
.
您请求的扩展只能通过“Azure AD graph api”访问,不能通过“Microsoft graph [=53=”访问]”虽然在“Microsoft graph api(get user)”的响应中有一个像 extension
的 属性。所以我们需要使用 Azure AD 图形 SDK 而不是使用 Microsoft.Graph
.
根据网上搜索,关于如何使用Azure AD graph SDK的信息很少。并且在10/17/2016
更新了最新版本的sdk,因为微软很久没有更新“Azure AD graph”了。我不清楚如何使用 Azure AD 图形 SDK,所以我建议您直接在代码中请求 Azure AD 图形 api。您可以参考下面我的解决方案:
1.您需要在AD中注册一个应用程序并为其添加权限(添加Azure AD图形权限但不添加Microsoft图形权限)。
2. 之后,我们可以通过下面的代码请求Azure AD图api:
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);
}
}
}
responseString1
包含用户的所有字段,你需要解析json得到你想要的扩展