Я отправляю это в надежде получить некоторые отзывы/советы и информацию о том, с чем я боролся в последние несколько дней. Чтобы начать, я кратко расскажу о проекте.Авторизация с помощью токена-указателя OAuth, предоставленного внешним веб-API
Есть 2 приложения в растворе:
WebAPI ресурсы & сервера авторизации - Использует Owin (размещенный в IIS) и ASP.NET Идентичность выдавать маркер аутентификации на правильный логин, а затем разрешать запросы к различным контроллерам.
Клиентское приложение MVC - Пока нет (пока не выясню), но вызовет на сервер ресурсов WebAPI все данные. Эти вызовы будут выполняться только из действий контроллеров в клиентском приложении, без вызовов AJAX на стороне клиента.
Клиентское приложение не имеет собственного источника данных. Вся информация хранится в базе данных, к которой имеет доступ служба WebAPI, поэтому, если они предоставляют правильные учетные данные, а клиентское приложение получает токен-носитель, мне нужно предоставить способ для приложения, чтобы увидеть их как авторизованные.
- Каков наилучший способ справиться с этим?
- Возможно ли настроить OWIN на стороне клиента для использования настроек OAuth сервера? Я лаяю неправильное дерево, и мне нужно просто использовать HTTPClients?
- Могу ли я десериализовать токен-носитель и сохранить его в сеансе, а затем написать свои собственные авторизационные провайдеры, чтобы проверить их на стороне клиента?
Мои первоначальные опасения состоят в том, что я злоупотребляю знаками-носителями и пытаюсь скрестить их с решением, которое не является идеальным. Все примеры внешнего авторизации, которые я нашел до сих пор, обычно включают в себя призывы к провайдерам, размещенным в Google/Facebook/Twitter, чтобы проверить, кто из них, кто они говорят, а затем переходит к созданию пользовательской записи в своей системе. Мое приложение не может этого сделать.
Что касается безопасности, я планировал ввести фильтры, которые подтвердили бы, что запрос пришел из клиентского приложения, предоставив идентификатор и секрет, а также проверку IP-адресов.
Я понимаю, что это может быть немного открытым, но я был бы признателен за любой совет. Объем проекта заключается в том, что веб-служба является только, чтобы иметь доступ к базе данных. Клиентское приложение MVC будет размещено на другом сервере, и служба будет принимать заявки только от указанного клиентского приложения.
хороший вопрос .... –