Проверка подписи OIDC - PullRequest
       49

Проверка подписи OIDC

0 голосов
/ 04 марта 2019

Мы тестируем наш собственный OIDC-IDP с коммерческим клиентом.(У нас нет доступа к клиентскому коду.) После некоторых тестов клиент всегда возвращает

Не удалось проверить токен OpenID Connect: недопустимая подпись токена (ID_TOKEN)

IDP находится в сети, клиент находится в нашей собственной сети с промежуточным прерывателем SSL.У нас есть тестовый клиент, также в WWW, который работает нормально.

Мой вопрос в том, какой сертификат использует OIDC-клиент для проверки подписи.Это сертификат сайта ВПЛ?Если это так, может ли быть причина этой ошибки, ssl-breaker заменяет оригинальный сертификат?

1 Ответ

0 голосов
/ 04 мая 2019

Примечание о OIDC lingo

  • Поставщик OpenId (OP) аналогичен SAML2 IdP
  • Проверяющая сторона (RP) аналогична SAML2 SP

Я знал, на что вы ссылались, когда писали «IdP» и «клиент», но хочу отметить, что вы обычно будете видеть OP и RP, используемые для документации / обсуждений OIDC.

Контекст и предложения

Коммерческий RP, который вы тестируете, утверждает, что проверка подписи идентификатора токена (т.е. JWT) не удалась.Чтобы конкретно ответить на ваш вопрос, нет, это , а не с использованием сертификата x509 с веб-сайта OP для проверки подписи.Ключ, используемый RP для проверки подписи, будет зависеть от того, настроили ли вы свой OP для подписи токенов ID, используя:

  • HS256 (алгоритм симметричного ключа);или
  • RS256 (алгоритм асимметричного ключа)

Пожалуйста, ознакомьтесь с принятым ответом в этой теме для контекста: RS256 против HS256: В чем разница?

В первом случае (HS256) ваш OP подписывает токен ID секретным ключом.И ваш RP должен проверить подпись, используя тот же секретный ключ.(Примечание: как вы, вероятно, знаете, важно обеспечить безопасность и безопасность этого общего секретного ключа.) Если это ваша среда, возможно, коммерческий RP имеет параметр конфигурации, позволяющий загружать или копировать / вставлять секретный ключ.

В последнем случае (RS256) ваш OP подписывает токен ID с помощью закрытого ключа, но ваш RP проверяет подпись, используя свой аналог открытого ключа.Если это ваша среда, возможно, коммерческий RP имеет параметр конфигурации для указания "jwks_uri" и "kid".Они относятся к URI, на котором публикуется ваш открытый ключ, и к его идентификатору ключа соответственно.

...