OpenID Connect: является ли ошибкой запрос openid области с помощью токена response_type

Существует некорректно работающий с OpenID Connect «совместимый» iDP (на данный момент он должен оставаться безымянным) - он выдает ошибку при использовании области видимости openid и любого response_type, который включает id_token. Это определенно ошибка, о которой сообщалось.

Тот же iDP также возвращает id_token в неявном потоке, когда область видимости включает openid, а response_type является просто «токеном». Это приводит к сбоям в работе широко используемого пакета npm oidc-client, который сообщает об ошибке «Не ожидается id_token в ответе» - что, согласно спецификации OIDC, является строго правильным.

Но тут возник интересный вопрос:

Учитывая базовую предпосылку из раздела 1 спецификации OIDC:

OpenID Connect реализует аутентификацию как расширение процесса авторизации OAuth 2.0. Клиенты запрашивают использование этого расширения путем включения значения области openid в запрос авторизации.

и этот раздел 3.2.2.1 говорит

ПРИМЕЧАНИЕ. Хотя OAuth 2.0 также определяет значение типа ответа токена для неявного потока, OpenID Connect не использует этот тип ответа, поскольку токен идентификатора не возвращается.

должно ли поэтому быть ошибкой их использование вместе? Или тот факт, что openid находится в области видимости, должен приводить к тому, что реализация по умолчанию «добавляет» id_token к response_type неявного потока?


person Martin Bartlett    schedule 20.07.2018    source источник


Ответы (1)


Как я вижу, провайдер OpenID Connect должен возвращать ошибку. Он должен использовать код ошибки invalid_request, который определен спецификацией OAuth 2.0 для неявной реакции на ошибку.

В запросе отсутствует обязательный параметр, он включает недопустимое значение параметра, включает параметр более одного раза или имеет другой неправильный формат.

Но с точки зрения спецификации ответ на ошибку не требуется / обязателен. Он просто говорит, что тип ответа с токеном недействителен.

ПРИМЕЧАНИЕ. Хотя OAuth 2.0 также определяет значение типа ответа токена для неявного потока, OpenID Connect не использует этот тип ответа, поскольку токен идентификатора не возвращается.

Я думаю, что упомянутый поставщик OpenID Connect учитывает только значение области и обслуживает запрос как запрос OpenID Connect. Таким образом, вы получите в ответ токен id.

person Kavindu Dodanduwa    schedule 20.07.2018