2015-02-11 2 views
2

Я искал использование мандатов учетных данных oauth2 для защиты моего API (всем пользователям будут доверять третьи стороны). Я следую тому же подходу, что и paypal: https://developer.paypal.com/docs/integration/direct/paypal-oauth2/Зачем использовать поток учетных данных клиента?

Однако, я вижу, что HTTP: // basic auth используется для получения токена-носителя. Затем токен-носитель используется для защиты вызовов API.

Что я не понимаю, если вы собираетесь доверять TLS и http: basic auth, чтобы получить токен-носитель - почему бы просто не использовать http: basic auth для вызовов API? В чем преимущество использования токенов-носителей?

Что мне не хватает?

ответ

1

В соответствии с The OAuth 2.0 Authorization Framework: Bearer Token Usage

маркера доступа обеспечивает абстракцию, заменяя различные конструкции авторизации (например, имя пользователя и пароль, утверждение) для единых маркеров понят сервером ресурсов. Эта абстракция позволяет выдавать токены доступа, действительные в течение короткого периода времени, а также как удаление необходимости использования ресурсного сервера в широком диапазоне схем аутентификации .

Сервер, который разрешает запрос и дает вам токен-носитель, может отличаться от сервера, который фактически контролирует ресурсы, к которым вы пытаетесь получить доступ.

В соответствии с RFC они были показаны как два разных объекта. Тот, который дает вам токен-носитель, - Сервер авторизации, а тот, обслуживающий ресурсы, - Сервер ресурсов.

+1

Означает ли это, что если мой сервер авторизации и сервер ресурсов являются одним и тем же, то токены-носители не дают никакой реальной выгоды? –

+0

Преимущество будет заключаться в том, чтобы при аутентификации клиента каждый раз, когда запрашивается ресурс. –

+1

Извините за Ankit от наивного q - но почему аутентификация клиента была бы более трудоемкой, чем проверка токена-носителя? –

1

Добавляя к тому, что говорит Анкит Сарох, путь OAuth с помощью токенов может открыть другие возможности в будущем; скажем, вы можете расширить поток, чтобы включить информацию о пользователе. Путем проверки только токенов это означает, что вам, вероятно, не нужно будет менять проверку подлинности маркера (что просто) в вашей службе, а скорее только шаги аутентификации и авторизации.

Но, очевидно, вы правы в том, что вы говорите: Клиент Полномочия OAuth Поток не более безопасный чем просто с помощью таких методов, как API ключей или обычной проверки подлинности. Все полагаются на то, что Клиент является конфиденциальным (он может хранить свои учетные данные сам по себе).

OAuth Spec (https://tools.ietf.org/html/rfc6749#section-2.1) рассказывает об этих типах клиентов. В целом, стоит прочитать спецификацию на самом деле.

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