Использование стороннего сайта для потока кода авторизации OAuth2 / OIDC - понимание последних шагов

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

df.insert(0, 'Name', 'abc')

  Name        Date  Open  High  Low  Close
0  abc  01-01-2015   565   600  400    450

0
задан Full Time Skeleton 16 January 2019 в 09:40
поделиться

2 ответа

Серверы авторизации OpenID Connect предоставляют конечную точку userinfo , которую Сайт A может использовать для получения информации о пользователе, который авторизовал токен доступа (или код авторизации). Чтобы провайдер аутентификации (сайт B) мог это сделать, он должен поддерживать связь между токеном и его пользователем. Таким образом, для этой цели нет файла cookie.

Вы правы относительно потока кода авторизации - токен доступа остается на бэкэнде - нет необходимости отправлять его внешнему интерфейсу / пользователю.

Чтобы иметь возможность связать токены, хранящиеся в бэкэнде SiteA, с последующими запросами от браузера, у вас есть несколько вариантов:

  • Вы можете использовать бэкэнд-сеанс с файлами cookie, что очень просто потому что большинство базовых фреймворков имеют встроенную поддержку для него. Файл cookie отправляется автоматически при каждом запросе, и токены могут быть сохранены в объекте сеанса. Это решение может быть сложнее масштабировать - если вам нужен кластер.
  • Вы можете создать свою собственную реализацию сеанса - либо с помощью файлов cookie, либо с помощью некоторого идентификатора, ожидаемого в REST API, в качестве значения заголовка HTTP авторизации. Данные внутреннего сеанса могут храниться в некотором распределенном хранилище, таком как Hazelcast или база данных. Идентификатор сеанса может быть в форме подписанного JWT, поэтому вы можете хранить в нем информацию о пользователе.
0
ответ дан Ján Halaša 16 January 2019 в 09:40
поделиться

Если вы really хотите знать, кто является пользователем SiteA, это должен быть пользователь из собственной пользовательской базы данных SiteA. Это имеет смысл, если SiteA является не просто прокси для API SiteB и имеет своих собственных пользователей, разрешения и функциональность.

Чтобы выяснить, кто является пользователем SiteA, вам необходимо сопоставить всех пользователей вашего SiteA с пользователями Auth Server.

Часть 1. Импорт существующих пользователей на Auth Server

Если вы управляете Auth Server, импортируйте всех ваших текущих пользователей в его базу данных пользователей. Каждый из них будет иметь Subject ID (идентификатор на стороне сервера аутентификации). Скопируйте эти идентификаторы обратно соответствующим пользователям в базе данных вашего SiteA: в таблице User вашего SiteA будет новый столбец, например: userid, user_name, user_last_name, user_auth_id (новый столбец)

, если вы не можете импортировать все ваши пользователи, это становится сложным. Единственный способ, о котором я могу подумать: вам придется дважды регистрировать этих пользователей - один раз в OIDC-провайдере и один раз в SiteA, а затем связать пользователя SiteA с пользователем OIDC.

Часть 2. Сопоставление входящего пользователя с внутренним пользователем в SiteA

В случае успешного ответа от OIDC Server вы получите идентификационный токен. Содержит sub заявку с ИД субъекта пользователя. Когда вы получите это, вам нужно будет выполнить поиск во внутренней БД и найти соответствующего пользователя SiteA. Если вы не нашли его, создайте нового пользователя в SiteA (если все существующие пользователи были импортированы)

Как только вы узнаете, кто этот пользователь, войдите в систему SiteA, как вы это обычно делаете (дайте им cookie, например).

0
ответ дан Alex Buyny 16 January 2019 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: