Вариант использования инициализации входа от третьей стороны - PullRequest
0 голосов
/ 13 апреля 2019

Раздел 4 спецификации ядра Open Id Connect 1.0 гласит:

В некоторых случаях поток входа в систему инициируется поставщиком OpenID или другой стороной, а не проверяющей стороной.В этом случае инициатор перенаправляет на RP на своей конечной точке инициирования входа в систему, которая запрашивает, чтобы RP отправил запрос аутентификации на указанный OP.Эта конечная точка инициализации входа в систему может быть глубокой ссылкой на RP, а не целевой страницей по умолчанию.RP, поддерживающие OpenID Connect Dynamic Client Registration 1.0 [OpenID.Registration], регистрируют это значение конечной точки, используя параметр регистрации initiate_login_uri.

Сторона, инициирующая запрос на вход в систему, делает это путем перенаправления на конечную точку инициирования входа в систему, передавая RPследующие параметры:

iss ТРЕБУЕТСЯ.Идентификатор эмитента для OP, на который RP должен отправить запрос аутентификации.Его значение ДОЛЖНО быть URL-адресом по схеме https.login_hint НЕОБЯЗАТЕЛЬНО.Подсказка к серверу авторизации об идентификаторе входа в систему, который конечный пользователь может использовать для входа в систему. Если клиент получает значение для этого строкового параметра, он ДОЛЖЕН включить его в запрос аутентификации в качестве значения параметра login_hint.target_link_uri ДОПОЛНИТЕЛЬНО.URL, на который RP запрашивается для перенаправления после аутентификации.RP ДОЛЖНЫ проверять значение target_link_uri, чтобы не использовать его в качестве открытого перенаправителя на внешние сайты.Параметры могут быть либо переданы в качестве параметров запроса с использованием метода HTTP GET, либо как значения HTML-формы, которые автоматически отправляются в пользовательский агент и, следовательно, передаются с помощью метода HTTP POST.

Другие параметры МОГУТбыть отправлено, если это определено расширениями.Любые используемые параметры, которые не понятны, ДОЛЖНЫ игнорироваться клиентом.

Клиенты ДОЛЖНЫ использовать удаление фреймов и другие методы, чтобы предотвратить вход конечных пользователей на сторонние сайты без их ведома через атаки, такие как Clickjacking.Обратитесь к Разделу 4.4.1.9 [RFC6819] для получения более подробной информации.

Предположим, у меня есть клиент RP foo, зарегистрированный на OP service.com, я хотел бы знать, как он подходит для использования.В случае, если клиент foo дает команду оператору OP service.com передать запрос другому оператору, например, Google.И как RP в итоге получает id_token.

1 Ответ

1 голос
/ 15 апреля 2019

Он не подходит для вашего варианта использования:

  • foo является RP и, следовательно, может быть инициатором: в разделе 4 говорится поток входа в систему инициируется поставщиком OpenID или другимparty
  • но foo не может дать команду service.com пересылать на google, поскольку service.com - это OP, а не RP, а в разделе 4 говорится только о перенаправлении на RP: сторона, инициирующая запрос на вход в систему, делает это путем перенаправления на конечную точку инициирования входа в систему на RP .

. Поэтому раздел 4 не применяется к вашему варианту использования.

Aспособ соответствия вашему варианту использования - позволить service.com действовать одновременно как OP, а SP: service.com может действовать как OP для foo и как SP для Google.Пример такого варианта использования реализован FranceConnect .Это французская государственная служба, которая действует как IdP (OP) перед своими клиентами (например, французские государственные службы, например, для медицинского страхования) и RP (SP) перед французскими государственными провайдерами идентификации (некоторые государственные администрации, такие какгосударственный отдел финансов).Таким образом, конечный пользователь подключается к начальному сервису, сервис перенаправляет этого пользователя в FranceConnect в качестве OP, FranceConnect в качестве SP перенаправляет этого пользователя в другой OP, этот последний OP перенаправляет пользователя обратно в FranceConnect, который получает личность пользователяиз конечного OP, затем перенаправляет пользователя в начальный сервис, который получает идентификационные данные пользователя из FranceConnect (FranceConnect знает идентификационные данные, поскольку он получил его из конечного OP ранее).

Вот диаграмма последовательности UMLдля этого варианта использования:

UML sequence diagram

...