使用 ClaimsIdentity 通过 AAD 图检索用户配置文件
Using ClaimsIdentity to retrieve user profile via AAD graph
我正在使用 OpenId Connect 基于 Azure Active Directory 构建用户身份验证。
我可以使用我在 AAD 中的帐户成功登录到我的网站。
登录后,我想通过 AAD 图 API.
检索我的帐户信息
我可以通过 ClaimsIdentity 获取用户 ID:
ClaimsIdentity identity = this.User.Identity as ClaimsIdentity;
string userID = identity.GetUserId();
并且我可以通过图表获取用户信息API:
public IUser GetProfileById(string userID)
{
ActiveDirectoryClient client = GetAadClient();
var user = client.Users.Where(x => x.ObjectId == userID).ExecuteSingleAsync().Result;
return user;
}
但是,存储在 ClaimsPrincipal 中的用户 ID 似乎不是 AAD 中的对象 ID,因此我需要找到一些其他方法来检索用户信息。另一种选择可能是根据电子邮件地址查找用户,但我也不知道该怎么做。
任何帮助或建议将不胜感激。
感谢@juunas 我找到了类型:
ClaimsIdentity identity = this.User.Identity as ClaimsIdentity;
string objectID = identity.Claims.FirstOrDefault(x => x.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
然后对象ID可以通过AAD图获取用户信息API.
这里是为仍在查找的其他人提供的快速解答。
public void GetUserFromAD(GraphServiceClient gsc)
{
try
{
ClaimsIdentity identity = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
string objectID = identity.Claims.FirstOrDefault(x => x.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
var user = gsc.Users[objectID].Request().GetAsync().Result;
}
catch(Exception ex)
{
// do something.
}
}
请注意,您可以使用 Users[objectid] 进行直接查找,而不是通过结果列表进行枚举。
我正在使用 OpenId Connect 基于 Azure Active Directory 构建用户身份验证。 我可以使用我在 AAD 中的帐户成功登录到我的网站。 登录后,我想通过 AAD 图 API.
检索我的帐户信息我可以通过 ClaimsIdentity 获取用户 ID:
ClaimsIdentity identity = this.User.Identity as ClaimsIdentity;
string userID = identity.GetUserId();
并且我可以通过图表获取用户信息API:
public IUser GetProfileById(string userID)
{
ActiveDirectoryClient client = GetAadClient();
var user = client.Users.Where(x => x.ObjectId == userID).ExecuteSingleAsync().Result;
return user;
}
但是,存储在 ClaimsPrincipal 中的用户 ID 似乎不是 AAD 中的对象 ID,因此我需要找到一些其他方法来检索用户信息。另一种选择可能是根据电子邮件地址查找用户,但我也不知道该怎么做。 任何帮助或建议将不胜感激。
感谢@juunas 我找到了类型:
ClaimsIdentity identity = this.User.Identity as ClaimsIdentity;
string objectID = identity.Claims.FirstOrDefault(x => x.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
然后对象ID可以通过AAD图获取用户信息API.
这里是为仍在查找的其他人提供的快速解答。
public void GetUserFromAD(GraphServiceClient gsc)
{
try
{
ClaimsIdentity identity = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
string objectID = identity.Claims.FirstOrDefault(x => x.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
var user = gsc.Users[objectID].Request().GetAsync().Result;
}
catch(Exception ex)
{
// do something.
}
}
请注意,您可以使用 Users[objectid] 进行直接查找,而不是通过结果列表进行枚举。