Поток авторизации в 2-х шагах Проверка подлинности oauth2 для централизованного входа в социальную сеть - PullRequest
0 голосов
/ 13 января 2019

Введение

У меня есть собственная база данных учетных записей пользователей, и я создаю сервер авторизации oauth2 для централизации логики аутентификации на сайтах моих компаний с использованием authorization code типа предоставления.

Допустим, я развернул страницу входа на сервер авторизации на https://auth.my.company.com и развернул веб-сайт на https://my.website1.com. Когда пользователь нажимает кнопку login в https://my.website1.com, типичный поток кода авторизации oauth2 будет запущен, как показано на рисунке ниже.

typical oauth2 authorization code grant type

Объяснить картину:

  1. Пользователь имеет доступ к https://my.website1.com, который отображает кнопку входа в систему.
  2. Пользователь переходит на централизованную страницу входа с URL https://auth.my.company.com?client_id=mysite1&redirect_url=https://my.website1.com/oauth/callback
  3. Пользователь вводит имя пользователя и пароль и отправляет форму входа.
  4. После того, как сервер аутентификации проверит учетные данные пользователя, он перенаправит пользователя обратно на redirect_url https://my.website1.com/oauth/callback?auth_code=abcd, передав параметр auth_code=abcd
  5. Бэкэнд-сервер веб-сайта связывается с сервером авторизации, используя входной код auth_code для аутентификации пользователя, сервер авторизации возвращает токен доступа.
  6. Сайт отвечает пользователю, что процесс входа в систему прошел успешно.

Проблема

На https://my.website1.com мне бы хотелось, чтобы пользователь также мог войти в систему со своей учетной записью Facebook, которая будет связана с учетной записью в моей базе данных учетных записей пользователей. Я также хотел бы централизовать этот процесс (то есть, чтобы мой другой сайт https://my.website2.com мог повторно использовать тот же процесс входа в систему). Поэтому я подумываю реализовать 2-хоповый поток oauth, как показано на следующем рисунке.

2-hop oauth

  1. Пользователь имеет доступ к https://my.website1.com, который отображает кнопку входа в систему.
  2. Пользователь перешел на мою централизованную конечную точку входа в Facebook https://auth.my.company.com/facebook
  3. Авторизация разрешает свой идентификатор клиента Facebook и URL перенаправления, а затем перенаправляет пользователя на страницу входа в Facebook.
  4. Пользователь авторизуется через Facebook.
  5. Facebook перенаправляет пользователя обратно на мой сервер авторизации, передавая код авторизации.
  6. Мой сервер авторизации использует код авторизации из Facebook для аутентификации пользователя с помощью API Facebook
  7. Мой сервер авторизации перенаправляет пользователя обратно на https://my.website1.com, передавая собственный сгенерированный код авторизации.
  8. Бэкэнд-сервер веб-сайта связывается с сервером авторизации с использованием входного auth_code для аутентификации пользователя, сервер авторизации возвращает токен доступа.
  9. Сайт отвечает пользователю, что процесс входа в систему прошел успешно.

Вопрос

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

1 Ответ

0 голосов
/ 18 января 2019

Найдена ссылка на веб-сайте IBM, которая выглядит очень похоже на рассматриваемый поток. Здесь

...