Spring Boot 2.3.4: ошибка с JwtValidators.createDefaultWithIssuer(String)?
Я обнаружил странное поведение с парсингом JWT и JwtValidators.
Сценарий:
- Клиент Spring Boot OIDC (на данный момент это крошечное веб-приложение, отображающее только зарегистрированного пользователя и некоторые объекты OIDC, предоставленные Spring)
- На заказ
JwtDecoderFacotry<ClientRegistration>
для проверки ID-Token JwtValidatorFactory
на основеJwtValidators.createDefaultWithIssuer(String)
Это хорошо работало с Spring Boot версии <= 2.2.10.
Отладка:
NimbusJwtDecoder
(JAR spring-security-oauth2-jose) использует преобразователи набора утверждений. Утверждение "iss" (издатель) обрабатывается как URL.JwtIssuerValidator
(внутренне созданоJwtValidators.createDefaultWithIssuer(String)
) оборачиваетJwtClaimValidator<String>
.- этот наконец звонит
equals()
это всегдаfalse
- сравнивает строку с URL.
Мой текущий обходной путь не вызывает
JwtValidators.createDefaultWithIssuer()
но просто используя валидаторы
new JwtTimestampValidator()
и собственная реализация
OAuth2TokenValidator<Jwt>
(с упаковкой
JwtClaimValidator<URL>
).
У кого-нибудь еще есть проблемы с этим?
- Кристиан