2016-02-09 3 views
4

Я использую Azure Active Authentication Library для входа пользователей в приложение WPF. После звонка на AuthenticationContext.AcquireToken() я получаю AuthenticationResult с некоторыми UserInfo, но он не предоставляет ClaimsPrincipal, который использует мое приложение. Также System.Security.Claims.ClaimsPrincipal.Current возвращает только пустой основной объект без претензий, заполненных им. Как мне получить ClaimsPrincipal для входа пользователя?Как получить ClaimsPrincipal из ADAL AuthenticationResult

+0

Какую информацию вы хотите получить из ClaimsPrincipal? – Thomas

+0

Вы пытались получить доступ к Thread.CurrentPrincipal? – Thomas

+0

Мне нужно получить доступ к базовой информации о пользователе и всем требованиям для пользователя, тем же, которые мы получаем при входе в AD через OAuth. 'Thread.CurrentPrincipal' также содержит пустой GenericPrincipal. – orad

ответ

1

AuthenticationResult.AccessToken - это токен JWT, который представляет пользователя. Вы можете использовать http://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/5.0.0-rc1-211161024 для чтения маркера и создания принципала претензий. api для JwtSecurityTokenHandler.ValidateToken принимает параметры TokenValidationParameters, которые могут использоваться для проверки правильности видимости.

Все, что сказано, в зависимости от того, что вам нужно (возможно, вам не нужен ClaimsPrincipal), вы можете посмотреть свойство AuthenticationResult.UserInfo.

+0

Спасибо Брент, прямо сейчас я ищу 'UserInfo' и создаю' ClaimsPrincipal', но он не включает в себя все. Я попробую нугет, на который вы ссылались. – orad

+0

Обратите внимание на 5.x версию S.IM.Tokens.Jwt является предварительным и поддерживает 4.5.1 и corefx. 4.x - качество выпуска. –

+1

образец кода сделал бы эту тонну лучше –

 Смежные вопросы

  • Нет связанных вопросов^_^