top of page

немного по теме авторизации в REST API- сервисы. чтобы авторизоваться, достаточно всего лишь... жми!

  • Фото автора: Алик Ким
    Алик Ким
  • 6 февр. 2023 г.
  • 3 мин. чтения

Обновлено: 28 апр. 2023 г.

поразбирался в теме немного.

Тут не очень структурировано, больше поток мыслей, извиняйте.


OAuth - это ,вот, спецификация, которая позволяет логиниться через Google и Fb.

в asp.net Core есть поддержка для авторизации через дохрена всего, в т.ч. даже Вконтакт и Одноклассники (в смысле, есть реализация подключения к их авторизации в на своем вэб-приложении)



виды авторизации сервисов REST API:


базовая авторизация - заголовок Authorization: Basic <base64 логин:пароль>


Bearer-аутентификация - Authorizarion: Baearer <BearerToken>, а сам токен получаем через отправку логина-пароля в метод авторизации API. ну типа похоже на обычную куки-авторизацию на сайтах


есть еще тип авторизации, когда токен зашифрован асинхронно, и не нужно для его проверки лазить куда-то в БД, как для ~сайтовских куки.

вроде как, это - Json Web Token - JWT. ну или по крайней мере это - стандарт для создания подобных токенов

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


(ну и еще какие то виды авторизации, наверное, я уже внимание не заострял)



ссылки, которые могут пригодиться (хотя, не факт):

https://stackoverflow.com/a/59670260/1438829 - полезненько. описывается базовая аутентификация и Bearer-token-аут-я (принцип работы)


https://habr.com/ru/company/Voximplant/blog/323160/ - объясняется, зачем нужен refresh-токен в дополнение к access-токену. прикольно. гарантирует, что если злоумышленник украдет пару токенов - они у него помрут максимум по окончании времени жизни аксесс-токена (а оно по задумке невелико - несколько десятков минут)(хотяяя, если рефреш похитит тоже - что помешает ему работать с сервисом параллельно с , собственно, пользователем, который переавторизуется ~через логин-пароль?)



Стандарты авторизации, их соотношение.


OpenId Connect - он же OIDC - протокол, позволяющий логиниться с помощью ~провайдеров логина (google, FB...). работает поверх OAuth 2, поверх TLS/SSL/HTTPS. использует JWT.

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


Json Web Token - формат JSon-объекта, который передается авторизованному пользователю и используется в дальнейшем как токен доступа. что- то типа старого доброго куки-токена . но куки-токен при обработке каждого запроса нужно проверять, что мы такой выдавали (сверяться с БД, например). а инфа в JWT подписана (а мож и зашифрована?) создателем (issuer) JWT. и подпись может быть проверена приложением-пользователем сервиса авторизации. поэтому не обязательно каждый раз сдавать JWT issuer'у на проверку.


как соотносятся OAuth2 и OIDC

OAuth2 focuses on authorization, not authentication. The assumption is that Google, Facebook, etc. has performed strong authentication and is confident about a user’s identity

OIDC is an extension of OAuth2 that focuses on user authentication rather than user authorization. Once OIDC authenticates a user, it uses OAuth2 specifications to perform authorization.

OAuth2 is focused solely on authorization, while OIDC supports authentication and authorization

*OIDC = OpenID Connect


хмм, то есть, логика соотношения OIDC и OAuth такая:

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


OIDC - надстройка на OAuth, которая: чтоб получить токен - ты обращаешься туда-то с такими0то авторизационными данными, дальше то-то и то-то... и вот после этого генерится токен

... который ты можешь в рамках OAuth пихать в последующие API-вызовы. то есть, OIDC заостряет внимание именно на процессе аутентификации.


сейчас, когда говорят " OAuth" - обычно подразумевают OAuth2 . это - широко распространенный стандарт. тогда как OAuth 1 в свое время был заточен под Twitter API. ну и сейчас им особо никто, я так понимаю, не пользуется.


OIDC - вроде, более молодой и менее распространенный. OAuth 2 - я так понимаю, широко распространен.

 
 
 

Недавние посты

Смотреть все

Commentaires


Околокомпьютерный блог Алика

  • alt.text.label.Facebook

© Околокомпьютерный блог Алика , 2022. Сайт создан на Wix.com

bottom of page