Как получить сведения о вошедшем в систему пользователе (идентификатор электронной почты пользователя и имя пользователя) с помощью токена доступа в системе единого входа AAD с использованием внутреннего интерфейса java-скрипта?

Привет, я разрабатываю приложение для магазина Windows 8.1 с использованием С# и xaml.

Для входа в систему я аутентифицирую пользователя с помощью единого входа Windows Azure Active Directory с использованием серверной части JavaScript.

Как только пользователь вошел в систему и у меня есть токен доступа, как получить идентификатор электронной почты пользователя и имя пользователя, вошедшего в систему, с помощью токена доступа в приложении?

Кто-нибудь, пожалуйста, предоставьте мне решение для получения электронной почты пользователя с помощью токена доступа?


person Santhosh Kumar    schedule 01.12.2014    source источник


Ответы (1)


Если у вас есть токен доступа, он должен содержать значение идентификатора пользователя. Для получения адреса электронной почты вам необходимо запросить Graph API, чтобы получить сведения о пользователе. Полная документация по этому вопросу находится здесь, но вкратце вы должны сделать запрос на получение, как показано ниже, с размещением AccessToken в заголовке авторизации после «Bearer».

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

В адресе можно использовать либо имя участника-пользователя, либо идентификатор объекта. Более того, вы можете использовать пакет nuget Azure AD Graph Client и вызовите их 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("[email protected]"))
    .ExecuteAsync().Result.CurrentPage.ToList().SingleOrDefault();

Полный пример см. здесь.

person htuomola    schedule 16.02.2015