Я пытаюсь интегрировать свои приложения Sprint Boot с Keycloak, начиная со страницы безопасного чванства.
keytool помог мне создать хранилище ключей с собственной подписью
keytool -genkey -alias abcdef -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
Я использую выше для настройки ssl для приложения
server:
port: "15700"
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: password
key-alias: abcdef
keyStoreType: PKCS12
Без keycloak https для чванства работает как положено.
Я запустил keycloak из их образа докера, как показано ниже, экспортировал http и https
services:
keycloak:
image: jboss/keycloak
environment:
DB_VENDOR: POSTGRES
DB_ADDR: my.ip.address
DB_PORT: 5432
DB_DATABASE: keycloak
DB_USER: username
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: password
ports:
- 8443:8443
- 8080:8080
Я прошу пользователя сначала войти в систему, когда он хочет получить доступ к документам swagger, поэтому я настраиваю keycloak, как показано ниже:
keycloak:
auth-server-url: "https://192.168.1.15:8443/auth"
realm: "DemoRealm"
public-client: true
resource: demo-app
security-constraints[0]:
authRoles[0]: "user"
securityCollections[0]:
name: "Demo App"
patterns[0]: "/swagger-ui.html"
Теперь не залогиненный пользователь будет перенаправлен на страницу входа в keycloak, он отлично работает. Но после успешного входа в систему при перенаправлении обратно на страницу приложения, я перехожу к следующей ошибке:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Если я настрою аутентификацию keycloak на http
keycloak:
auth-server-url: "http://192.168.1.15:8080/auth"
realm: "DemoRealm"
public-client: true
resource: demo-app
security-constraints[0]:
authRoles[0]: "user"
securityCollections[0]:
name: "Demo App"
patterns[0]: "/swagger-ui.html"
все работает отлично.
Это проблема конфигурации для keycloak или для приложения с весенней загрузкой? Любые необходимые шаги, которые я пропустил?