Подтвердить что ты не робот

Недостоверная аутентификация аутентификации api с oauth2

Я провел некоторое расследование относительно аутентификации с подтверждением api. Большинство людей указали на Oauth2 для спокойной аутентификации api. Я просмотрел некоторые из них, особенно эту ссылку https://developers.google.com/accounts/docs/OAuth2.

Мне кажется, Oauth2 предназначен для стороннего приложения для доступа к данным пользователей в google/facebook (или другом поставщике данных).

Наша проблема заключается в том, что у нас есть данные, нам не нужно обращаться к нашему клиенту с данными третьих сторон, а наши клиенты не имеют каких-либо сторонних данных. Мы хотим защитить наш api какой-то аутентификацией.

В нашем случае, какие удобные технологии для нашей спокойной аутентификации api? Мы будем выставлять наш api следующим образом

 https://ourdomain.com/api/<endpoint>

Наши клиенты могут сначала получить доступ к веб-сайту для регистрации https://ourdomain.com, и они должны иметь возможность получить clientId и clientKey с нашего сайта для доступа к apis. Наши клиенты должны иметь возможность потреблять через некоторую аутентификацию

4b9b3361

Ответ 1

Если я правильно понимаю, что вам нужно, это похоже на OAuth таким образом, что вы делаете то же самое, минуя предоставление стороннему приложению доступа к пользовательским ресурсам.

В OAuth существует центральная система, которая управляет аутентификацией и авторизацией, проверяя учетные данные пользователя и учетные данные пользователя и выдавая маркеры авторизации. Существует несколько конечных точек, которые будут принимать эти токены авторизации.

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

То, что вам нужно (я считаю), является аналогичной конечной точкой аутентификации, что клиент нажимает свои учетные данные и получает токен.

Итак,
i) Создайте регистрационную форму/консоль, где клиент может зарегистрироваться и получить свои учетные данные. Посмотрите this.
ii) Определите конечную точку HTTP, в которой пользователь меняет свои учетные данные для токена доступа + токен обновления.
iii) Клиент может попасть в конечную точку ресурса с помощью токенов доступа, чтобы сделать аутентифицированные вызовы на любую из ваших конечных точек.
iv) На задней панели вам понадобится общая служба, которая проверяет токены и извлекает информацию из нее.

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

Ответ 2

В oAuth 2.0 существует несколько типов типов грантов. Тип гранта - это всего лишь способ обмена некоторыми учетными данными для токена доступа. Обычно oAuth относится к стороннему использованию с помощью гранта для кода авторизации. Это означает перенаправление пользователя на веб-сайт владельца ресурса для аутентификации, который вернет обратно код авторизации.

Это явно не имеет смысла для использования 1-й стороны, потому что вы являетесь владельцем ресурса. oAuth 2.0 рассмотрел это и включил для этой цели грант учетных данных для владельца ресурса. В этом случае вы можете обменивать имя пользователя и пароль для токена доступа на первом уровне.

Подробнее см. http://tools.ietf.org/html/rfc6749#section-4.3.

Ответ 3

Просто, чтобы понять первоначальный вопрос:

OAuth2 требует, по крайней мере, клиента и сервера

OP задавалась вопросом, как защитить API REST, и почему все говорят о сторонних поставщиках аутентификации (Google, Facebook,...)

Здесь есть две разные потребности:

1 - Возможность защитить персональный API (ourdomain.com)

Client             Server
Consumers  <---->  Your API

2 - Возможность использования общедоступного API (например, получение списка контактов пользователя Google)

Client             Server
You        <---->  Google APIs

OP действительно нуждается в первом: реализовать сервер OAuth2 перед своим собственным API.
Существуют многие существующие реализации для всех языков/фреймворков в Github

Наконец, вот одно хорошее техническое описание Oauth2, и я бесстыдно беру одну из своих схем здесь:

Схема Google OAuth2

Нет, я не работаю в Google, я просто беру Google в качестве публичного примера поставщика API.