如何使用Java脚本后端在AAD单点登录中使用访问令牌获取登录用户详细信息(用户电子邮件ID和用户名)?

时间:2014-12-01 10:25:00

标签: authentication windows-store-apps azure-active-directory

您正在使用C#和xaml

开发Windows应用商店8.1应用

要登录,请使用JavaScript后端使用Windows Azure Active Directory单点登录对用户进行身份验证。

一旦用户登录并且我有访问令牌,如何使用应用程序中的访问令牌获取登录用户的用户电子邮件ID和用户名?

有人请给我一个使用访问令牌获取用户电子邮件的解决方案吗?

1 个答案:

答案 0 :(得分:2)

如果您有访问令牌,则应包含用户ID值。要检索电子邮件地址,您必须查询Graph API以获取用户详细信息。关于它的完整文档是here,但简而言之,您应该发出如下所示的get请求,将AccessToken置于授权标题中,然后是#34; Bearer"。

GET https://graph.windows.net/contoso.onmicrosoft.com/users/Alex@contoso.onmicrosoft.com?api-version=2013-04-05 HTTP/1.1
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Content-Type: application/json

您可以在地址中使用用户主体名称或objectId。更好的是,您可以使用Azure AD Graph Client nuget package并调用其API来获取用户信息。

Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, "contoso.onmicrosoft.com");
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, accessToken);
IUser user = activeDirectoryClient.Users
    .Where(user => user.UserPrincipalName.Equals("alex@contoso.onmicrosoft.com"))
    .ExecuteAsync().Result.CurrentPage.ToList().SingleOrDefault();

See here获取完整样本。