Skip to content

Latest commit

 

History

History
42 lines (30 loc) · 3.05 KB

OAuth2Connection.md

File metadata and controls

42 lines (30 loc) · 3.05 KB

OAuth2

Описание протокола

Реализация

Каждое соединение протокола OAuth2 должно реализовывать интерфейс OAuth2ConnectionInterface Подробнее про реализацию можно прочитать в аннотациях к методам класса.

Схема авторизации

Доменность

Для начала следует обозначить, что каждый бизнеc в iikoWeb закреплен под своим доменом, например https://acme.iikoweb.ru/ и механизм сессий работает только внутри данного домена. Однако, многие сервисы, у которых есть OAuth2 авторизация не принимают в качестве redirect_uri основной домен, например https://iikoweb.[ru|co.uk], а обмен создается независимо от пользователя.

Для этого в iikoWeb есть 2 пути редиректа из внешней системы

  • 1 - с авторизацией, далее доменная
  • 2 - без авторизации, далее бездоменная

[ru|co.uk] - iikoWeb находится на двух физических серверах, Россия .ru и Европа co.uk Какой домен выбрать уже выбирает пользователь, при настройки внешней системы исходя из документации он должен правильно указать свой домен iikoWeb.

Доменный редирект

Когда пользователь в UI обмена нажимает кнопку "поключиться к внешней системе" iikoWeb в качестве аргумента redirect_uri прописывает полный домен пользователя, например https://acme.iikoweb.[ru|co.uk]/api/exhange/oauth2/auth/{exchange}/{type}, где exchange - идентификатор обмена, type - loader|extractor.

Для такого типа во внешней системе редирект выглядит как https://iikoweb.[ru|co.uk]

В данном случае класс соединения должен в методе isSingleRedirectUri возвращать false

Бездоменный редирект

Если же внешняя система более жестко проверяет redirect_uri, то его динамическая инициализация не позволит механизму корректно авторизоваться. Для этого во внешней системе необходимо задать redirect как https://exchange.iikoweb.[ru|co.uk]/api/exchange/oauth2/auth

При этом все авторизационные данные запоминаются под state ключом.