2016-11-28 10 views
1

У меня есть веб-API с помощью Идентичность 2. Это кажется аутентифицировать меня хорошо, и /Token конечная точка возвращает то, что я десериализации к AuthTicket, например, с содержанием так же, как:Почему мой ASP.NET Web API с Identity 2 не предоставляет мне доступ к защищенным ресурсам?

AccessToken: "averylongtoken" 
Expires: {2016/12/12 8:19:22 AM} 
ExpiresIn: 1209599 
Issued: {2016/11/28 8:19:22 AM} 
TokenType: "bearer" 
Username: "myusername" 

Тогда, когда я отправить запрос как:

var response = await Client.GetAsync("api/appt/3/true", cancellationToken); 

и Client.DefaultRequestHeaders.Authorization выглядит следующим образом:

Bearer theSameVeryLongToken

Я все еще получаю 401 - Not authorized. Что здесь может быть не так? Может быть, веб-API каким-то образом не получает или правильно расшифровывает токен-носитель? Когда я устанавливаю точку прерывания в API и проверяю свойство User в действии контроллера, все его свойства имеют значение null или по умолчанию, но у него есть один ClaimsIdentity, свойства которого также являются пустыми или стандартными, а его коллекция Claims пуста ,

Должен ли я вручную устанавливать все претензии по сравнению с моими собственными? Я бы подумал, что ApplicationOAuthProvider.GrantResourceOwnerCredentials хотя бы добавит претензии, такие как имя пользователя или идентификатор.

+1

Если вы запустили свой запрос в Fiddler, вы видите свой токен, прошедший в заголовках запроса? А также что вы видите в контексте запроса в вашем классе OAuthProvider в методе GrantResourceOwnerCredentials? – Jinish

+0

По какой-то причине я не вижу запросов, полученных с помощью моего URL-адреса API. Когда я устанавливаю фильтр только на хост 'localhost: 51999', мой API и запускает запрос на почту от клиента, ничего не фиксируется. Я не вижу контекста запроса в «GrantResourceOwnerCredentials», только «OAuthGrantResourceOwnerCredentialsContext» и не является этим методом, который вызывается из конечной точки «/ Token», чтобы подписать пользователя. Все это прекрасно работает, как я четко заявил, при входе я получаю хороший ответ от '/ Token', с токеном auth, но он еще не будет в заголовках в« GrantResourceOwnerCredentials ». – ProfK

ответ

0

Я снова просмотрел все коды, как-то потерял строку, добавив токен аутентификации в заголовки запроса. Проверка этих заголовков перед отправкой запроса легко подтвердила это, и это было легко исправлено.

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

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