2015-04-01 2 views
0

У меня есть приложение WebApi2 с аутентификацией OAuth, и я использую утверждения, чтобы связать идентификатор пользователя с токеном доступа, поэтому в контроллере я могу узнать, к какому пользователю обращается.Как использовать претензии в WebApi с OAuth

Q1. Это хороший подход?

Q2. Есть ли способ получить доступ к значениям требований вне контроллера в приложении Owin WebApi? В одном случае я привязываю свои услуги в своем контейнере DI, и я хочу передать идентификатор пользователя на услугу

ответ

1
  • A1: Да, это один из наиболее подходящих подходов к аутентификации/авторизации.
  • A1. Обычно вы поставите текущий идентификатор пользователя в Thread.CurrentPrincipal и имеет элемент претензий, который будет иметь ваш текущий идентификатор пользователя
+0

Я установил CurrentPrincipal с новым ClaimPrincipal с моим ClaimIdentity, который содержит требование с USERID, Я использую Ninject в качестве контейнера DI, когда пытаюсь связать свою службу. Я использую ToMethod для ленивого создания экземпляра службы, в методе, который я вызываю Thread.CurrentPrincipal как ClaimsPrincipal, но я не могу найти userId в списке претензий, список пуст. Я что-то упускаю? –

+0

У вас есть какие-либо асинхронные звонки в вашей цепочке? Возможно, это потому, что вы устанавливаете CurrentPrincipal в поток и читаете его из другого потока? – Aram

+0

Просмотреть этот gist https://gist.github.com/marciotoshio/e54e590bb7ca9d10bbf4 показать, где я создаю своего Принципала, и где я пытаюсь его использовать –

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