Доступ к api через bearer token

Всё что касается построения API
Ответить
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Доступ к api через bearer token

Сообщение goodfriend »

Доброе утро.
Скажите на чужом сайте реализовано api, и страница защищена так:

Код: Выделить всё

    public function behaviors()
    {
        return [
            'bearerAuth' => [
                'class' => HttpBearerAuth::class,
            ],
        ];
    }
, мне прислали токен, по которому я могу получить доступ, ну и оно так и есть когда шлешь его в заголовке - 'Authorization: Bearer ' . $token - то есть доступ к api.
Но вот я подумал - это валидный вариант, когда вот этот токен я сохраню в конфиге своего приложения и буду иметь доступ к апи чужого сайта?
Или вся эта система задумывалась по другому?
Например когда я сначала должен по имени/паролю входить, получать токен (на время или как) и только потом его использовать.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Доступ к api через bearer token

Сообщение samdark »

По идее, токены должны устаревать их надо заново получать по тому же OAuth2. Но тут зависит от того, как реализовано.
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Доступ к api через bearer token

Сообщение goodfriend »

А тот токен который bearer фильтр ожидает, откуда он берётся?
Это тот токен по которому авторизуется какой то один пользователь? Из таблицы user? Вроде как он т.к. больше специфического кода не вижу кроме findidentitybytoken.

Просто вроде привычно что от некоего сервиса в админке мы получаем секретный ключ и по нему уже ходим. Вот какой этот ключ ожидает bearer фильтр и как им управлять..
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Доступ к api через bearer token

Сообщение ElisDN »

goodfriend писал(а): 2020.11.08, 14:53 Просто вроде привычно что от некоего сервиса в админке мы получаем секретный ключ и по нему уже ходим.
Смотря чей токен нужен нашему сайту. Один наш или много чужих.

Если нужен только наш токен для доступа к API от нашего аккаунта, то для себя мы обычно генерируем вечный токен в админке того сервиса и вписываем его в конфиг своего сайта.

Если же нужен токен посетителя нашего сайта, то каждого посетителя отправляем на OAuth2-страницу того же Facebook и там после ввода логина и пароля Facebook средиректит человека обратно на наш сайт уже со временным кодом или токеном этого человека. И по этому токену мы уже можем подгрузить его имя и аватарку по Facebook API и при желании сохранить токен в таблицу пользователя для дальнейшей работы с API от его имени.

Так что свой токен генерируем в кабинете и вписываем в конфиг, а чужой получаем через OAuth-редирект и используем на лету.
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Доступ к api через bearer token

Сообщение goodfriend »

ElisDN писал(а): 2020.11.08, 16:02
goodfriend писал(а): 2020.11.08, 14:53 Просто вроде привычно что от некоего сервиса в админке мы получаем секретный ключ и по нему уже ходим.
Смотря чей токен нужен нашему сайту. Один наш или много чужих.

Если нужен только наш токен для доступа к API от нашего аккаунта, то для себя мы обычно генерируем вечный токен в админке того сервиса и вписываем его в конфиг своего сайта.

Так что свой токен генерируем в кабинете и вписываем в конфиг,
Спасибо.
Вариант вот этот.
Моему сайту надо по крону оттуда просто что то импортировать.
Тот сайт на yii2 сделан.
Смотрю что мне прислали просто токен для какого то из пользователей, тот токен что генерируется с помощью generateAuthKey.
Получается по нему я аутентифицируюсь и имею доступ.

По сути получается что они, для общения между сайтами, просто добавили пользователя, ему при этом сгенерировался токен, и прислали мне его.

Сбило вот это в документации:
OAuth 2: токен доступа выдается пользователю API сервером авторизации и отправляется API-серверу через HTTP Bearer Tokens, в соответствии с протоколом OAuth2.
, да и просто по этому сайту в поиске смотрел что люди чем то более сложным занимаются.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Доступ к api через bearer token

Сообщение ElisDN »

На тогда и используйте этот токен у себя из конфига. Всё остальное вам не нужно.
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Доступ к api через bearer token

Сообщение goodfriend »

Все равно оно как то выглядит не до конца понятно.
Если на экшене контроллера только такая аутентификация прописана HttpBearerAuth::class, то
- получается что она не нужна и не будет выполняться если пользователь уже зареган на этом сайте.
- просто там есть сайт, и вот они так решили добавить api, будут ли такие страницы видны просто зареганным пользователям того сайта?
- по идее еще AccessControl фильтр нужен там, сразу после bearerAuth?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Доступ к api через bearer token

Сообщение ElisDN »

Да. Простой HttpBearerAuth закрывает только от гостей без токена. А для проверки ролей уже нужен AccessControl.
Ответить