Я использую Azure Active Authentication Library для входа пользователей в приложение WPF. После звонка на AuthenticationContext.AcquireToken()
я получаю AuthenticationResult
с некоторыми UserInfo
, но он не предоставляет ClaimsPrincipal
, который использует мое приложение. Также System.Security.Claims.ClaimsPrincipal.Current
возвращает только пустой основной объект без претензий, заполненных им. Как мне получить ClaimsPrincipal
для входа пользователя?Как получить ClaimsPrincipal из ADAL AuthenticationResult
ответ
AuthenticationResult.AccessToken - это токен JWT, который представляет пользователя. Вы можете использовать http://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/5.0.0-rc1-211161024 для чтения маркера и создания принципала претензий. api для JwtSecurityTokenHandler.ValidateToken принимает параметры TokenValidationParameters, которые могут использоваться для проверки правильности видимости.
Все, что сказано, в зависимости от того, что вам нужно (возможно, вам не нужен ClaimsPrincipal), вы можете посмотреть свойство AuthenticationResult.UserInfo.
Спасибо Брент, прямо сейчас я ищу 'UserInfo' и создаю' ClaimsPrincipal', но он не включает в себя все. Я попробую нугет, на который вы ссылались. – orad
Обратите внимание на 5.x версию S.IM.Tokens.Jwt является предварительным и поддерживает 4.5.1 и corefx. 4.x - качество выпуска. –
образец кода сделал бы эту тонну лучше –
Какую информацию вы хотите получить из ClaimsPrincipal? – Thomas
Вы пытались получить доступ к Thread.CurrentPrincipal? – Thomas
Мне нужно получить доступ к базовой информации о пользователе и всем требованиям для пользователя, тем же, которые мы получаем при входе в AD через OAuth. 'Thread.CurrentPrincipal' также содержит пустой GenericPrincipal. – orad