Приложение My Spring Boot прекрасно работало с KeyCloak с использованием публичного сертификата. Но так как мой Keycloak изменился на частный сертификат, я получаю следующую ошибку:
"An I/O error occurred while reading from the JWK Set source: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
Я уже получил частный сертификат, но не нашел успешного способа его установки;Если я свернусь к конечной точке Keycloack, передав сертификат в качестве параметра, он будет работать нормально.
curl --cacert mycertificate.crt -X GET \ 130 ↵
https://keycloak.address.bla/auth/realms/my-app/protocol/openid-connect/certs
Я попытался настроить свой класс ResourceServerConfiguration для использования сертификата путем создания keystore.jks с использованием keytool из моего частногосертификат, но я не имел успеха;Когда я пытаюсь выполнить приведенный ниже код, я получаю следующую ошибку: «Невозможно загрузить ключи из хранилища: ресурс пути к классу [keystore.jks]»
@Bean
@Primary
public JwtAccessTokenConverter createJwtAccessTokenConverter() {
var jwtAccessTokenConverter = new JwtAccessTokenConverter();
KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(new ClassPathResource("/keystore.jks"), "changeit".toCharArray());
jwtAccessTokenConverter.setKeyPair(keyStoreKeyFactory.getKeyPair("myAlias"));
jwtAccessTokenConverter.setAccessTokenConverter(keycloakAccessTokenConverter);
return jwtAccessTokenConverter;
}
Мои application.properties
security.oauth2.resource.id=account
security.oauth2.resource.jwk.key-set-uri=${app.keycloak.api}/protocol/openid-connect/certs