Может ли провайдер OpenID Connect пройти сертификацию, если он не поддерживает незашифрованные токены удостоверения личности и информацию о пользователе?

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

Насколько я понимаю, основная спецификация не запрещает этого. Динамическая регистрация клиента также поддерживается, но все параметры метаданных клиента id_token_encrypted*/userinfo_encrypted* переопределяются сервером, если они не были предоставлены. Согласно спецификации серверу разрешено это делать.

Однако спецификация обнаружения, похоже, не поддерживает эту идею. поскольку нет способа сообщить клиенту, что незашифрованные ответы не будут возвращены.

инструмент проверки соответствия также предполагает, что ответ не зашифрован. Чтобы иметь возможность запускать тесты, мне пришлось сделать исключение для этого конкретного клиента. Теперь я возвращаю только подписанные ответы, но даже если это пройдет, это не настоящая вещь.

Мешает ли это мне пройти верификацию, или я могу пройти верификацию, используя этот слегка модифицированный сервер, требуя, чтобы настоящие клиенты поддерживали шифрование?


person Ercinee    schedule 06.08.2018    source источник


Ответы (3)


Нельзя пройти сертификацию без поддержки незашифрованных токенов идентификатора, подписанных RSA SHA-256. Однако вы можете сертифицировать реализацию программного обеспечения, а затем отключить определенные алгоритмы во время развертывания.

редактировать: единственным исключением из этого является поддержка «нет», но это не имеет отношения к вашему делу

person Hans Z.    schedule 07.08.2018
comment
Спасибо, что подтвердили это :) - person Kavindu Dodanduwa; 07.08.2018
comment
Моя единственная проблема заключается в том, что я не вижу способа указать в метаданных, что ответы всегда будут зашифрованы. Мне нужно отключить отсутствие каких-либо алгоритмов. нет алгоритма подписи, но в JWE такого нет (или я что-то пропустил). Даже если бы это было, я думаю, что поля метаданных ..._encryption_alg_values_supported означают, что другое шифрование поддерживается помимо отсутствия шифрования. Я хотел бы не сбивать с толку клиентов, которые могут предположить, что токен идентификатора только подписан, даже если я технически прав, когда переопределяю их регистрационные метаданные. - person Ercinee; 07.08.2018
comment
вы можете указать, какое шифрование вы поддерживаете, используя поле encryption_alg_values_supported, а затем просто начать возвращать зашифрованные id_tokens - person Hans Z.; 07.08.2018

Я думаю, вы должны поддерживать токены singed ID. Это обязательно согласно спецификации OpenID Connect.

15.1. Обязательно для реализации функций для всех поставщиков OpenID

Подписание токенов идентификатора с помощью RSA SHA-256

OPs ДОЛЖНЫ поддерживать подписание ID-токенов с помощью алгоритма RSA SHA-256 (значение алгоритма RS256), за исключением случаев, когда OP поддерживает только возврат ID-токенов из конечной точки токена (как в случае с потоком кода авторизации). ) и позволяет только клиентам регистрироваться, не указав ничего в качестве запрошенного алгоритма подписи токена идентификатора.

Это также выделено в разделе ID Token.

Идентификационные токены ДОЛЖНЫ быть подписаны с использованием JWS [JWS] и, при желании, подписаны и затем зашифрованы с использованием JWS [JWS] и JWE [JWE] соответственно.

Далее говорится о типе none, который только

Токены ID НЕ ДОЛЖНЫ использовать none в качестве значения alg, за исключением случаев, когда используемый тип ответа не возвращает токен ID из конечной точки авторизации (например, при использовании потока кода авторизации) и Клиент явным образом не запросил использование none во время регистрации.

Зашифрованный JWT (JWE) является необязательным. Таким образом, чтобы ваш провайдер OpenID Connect получил сертификат, вы должны поддерживать подписание.

Кроме того, прочитайте профили соответствия OpenID Connect v3. 0, который служит ориентиром для сертификации.

person Kavindu Dodanduwa    schedule 07.08.2018
comment
Спасибо за ваш ответ, но, похоже, вы неправильно поняли проблему. Возвращаемые ответы всегда подписаны (мы даже не поддерживаем алгоритм подписи «none»). Но мы не возвращаем (и не можем) незашифрованные ответы. Короче говоря, мы всегда возвращаем ответы, подписанные И зашифрованные. Динамическая регистрация клиента OpenID Connect говорит, что сервер авторизации МОЖЕТ отклонить или замените любые ... значения полей и замените их подходящими значениями. ... Сервер авторизации МОЖЕТ игнорировать значения, предоставленные клиентом... - person Ercinee; 07.08.2018
comment
@Ercinee Ну, я думаю, что мой ответ плохо отформатирован. Что я хотел подчеркнуть, так это обязательное требование подписи. Шифрование является необязательным и одинаковым для всех. Таким образом, чтобы получить сертификат, вы должны использовать подпись. Надеюсь теперь понятно - person Kavindu Dodanduwa; 07.08.2018

Однако спецификация обнаружения, похоже, не поддерживает эту идею, поскольку нет способа сообщить клиенту, что незашифрованные ответы не будут возвращены.

Хотя у обнаружения нет способа сообщить об этом, динамическая регистрация Спецификация позволяет поставщику удостоверений сделать это.

Возврат userinfo_encrypted_response_alg и userinfo_signed_response_alg с предварительно определенными значениями в запрос на регистрацию клиента — это способ сказать, что такое политика IdP.

Соответствующая часть:

Сервер авторизации МОЖЕТ отклонить или заменить любые запрошенные Клиентом значения полей и заменить их подходящими значениями.

person Filip Skokan    schedule 07.08.2018