Имея ту же проблему, я наткнулся на этот пост.Поэтому я надеюсь, что это будет кому-то полезно.Я не думаю, что это лучшее решение, поэтому, возможно, кто-то придумает лучший ответ, я надеюсь, например, установить какой-нибудь внешний компонент.
Справочная информация: Магазин Jwk сравнивает KID в заголовке токена стот, который находится в памяти, если он недоступен, запросит хорошо известную конечную точку
. Поэтому, добавив KID в JwkSetEndpoint, вы получите файл json с ребенком внутри.рядом с этим вам нужно получить KID в заголовке токена jwt.
мое решение в моем классе, которое расширяет JwtAccessTokenConverter
@Override
protected String encode(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
String content = null;
try {
content = objectMapper.formatMap(getAccessTokenConverter().convertAccessToken(accessToken, authentication));
} catch (Exception e) {
throw new IllegalStateException("Cannot convert access token to JSON", e);
}
Map<String, String> headers = getJwtHeader();
String token = JwtHelper.encode(content, signer, headers).getEncoded();
return token;
}
рядом с заголовком KID, который Tokenstore ожидает использованиязаголовок установлен для подписи.мне также пришлось переопределить объект подписавшего, потому что я застрял с подписчиком hmac вместо желаемого RsaSigner.