2016-04-22 3 views
0

Я создал приложение, которое по существу является REST Web API. Я хотел бы предоставить другим разработчикам возможность вызывать эти API от имени пользователя. Я решил продолжить проверку подлинности OAuth, основывая мою службу аутентификации на IdentityServer3. Прямо сейчас мне удалось создать токен доступа для стороннего клиента, используя поток авторизации.IdentityServer3 - OAuth Flows, разные подходы

Что не убеждает меня в том, как обращаться со своим SPA, который в настоящее время вызывает мой веб-API, используя только аутентификацию на основе cookie (токен анти-подделки). Это приложение написано в Javascript на основе Backbone. В основном, это то, что он делает, просто вызывает мой веб-API и отображает результаты. Меня путают разные потоки грантов, и я не хочу создавать дыры в безопасности.

Solutions Я подумал:

  1. генерировать маркер непосредственно с помощью JavaScript. Какой поток следует использовать? Как обрабатывать токены?
  2. генерирует токен из серверного приложения и передает сгенерированный токен обратно в SPA (очевидно, через канал SSL). Это как-то безопасно? Если да, какой поток я должен использовать (я бы сказал, поток кода авторизации)? Как обрабатывать токены?

Как вы справитесь?

Спасибо,

Marco

ответ

1

Вот статья, которая идет в обзор которого текут прямо по какому сценарию: https://leastprivilege.com/2016/01/17/which-openid-connectoauth-2-o-flow-is-the-right-one/

+0

Спасибо! Я уже наткнулся на эту замечательную статью. Если я правильно понимаю, правильным использованием будет Implict Flow и пусть мой Javascript SPA обрабатывает этот токен доступа. Теперь встает вопрос: не «небезопасно», чтобы клиент «браузера» обрабатывал непосредственно токен? Благодарю. – Marconline

+0

Зависит от API. Но если вам нужны звонки из JS, вам нужно предоставить JS токен. Возможно, другой дизайн заключается в том, что JS вызывает первый уровень API, который, в свою очередь, вызывает второй уровень API. Конечно, для второго API нужен свой токен доступа, который является вашей следующей проблемой для решения. –

+0

Хорошо, спасибо. Похоже, что Implicit Flow является правильным решением. Я не буду создавать второй уровень API. благодаря – Marconline

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