#java #spring #keycloak
#java #spring #keycloak
Вопрос:
Я создал микросервис spring и пытаюсь проверить токен jwt, созданный с помощью keycloak.
Мое приложение.файл yaml содержит следующее свойство keycloak:
keycloak:
enabled: true
auth-server-url: http://localhost:8080/auth}
realm: another_realm
realm-key: another_key
resource: ping-pong
credentials.secret: another_secret
principal-attribute: blue
public-client: false
ssl-required: external
cors: true
autodetect-bearer-only: true
use-resource-role-mappings: false
expose-token: true
security-constraints:
- authRoles: [ 'ping_pong_user' ]
securityCollections:
- name: api
patterns: [ '/api/*' ]
Мой pom-файл содержит зависимость keycloak:
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>11.0.3</version>
</dependency>
Когда я пытаюсь вызвать свои ресурсы api, приложение возвращает ошибку:
2020-11-30 10:07:03.101 ERROR 12336 --- [.0-18090-exec-1] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing /api/save
java.lang.RuntimeException: Must set 'realm' in config
at org.keycloak.adapters.KeycloakDeploymentBuilder.internalBuild(KeycloakDeploymentBuilder.java:57) ~[keycloak-adapter-core-11.0.3.jar:11.0.3]
at org.keycloak.adapters.KeycloakDeploymentBuilder.build(KeycloakDeploymentBuilder.java:202) ~[keycloak-adapter-core-11.0.3.jar:11.0.3]
at org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver.resolve(KeycloakSpringBootConfigResolver.java:41) ~[keycloak-spring-boot-adapter-core-11.0.3.jar:11.0.3]
at org.keycloak.adapters.springsecurity.config.KeycloakSpringConfigResolverWrapper.resolve(KeycloakSpringConfigResolverWrapper.java:40) ~[keycloak-spring-security-adapter-11.0.3.jar:11.0.3]
at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:89) ~[keycloak-adapter-core-11.0.3.jar:11.0.3]
at org.keycloak.adapters.PreAuthActionsHandler.preflightCors(PreAuthActionsHandler.java:100) ~[keycloak-adapter-core-11.0.3.jar:11.0.3]
at org.keycloak.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:75) ~[keycloak-adapter-core-11.0.3.jar:11.0.3]
at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.invoke(AbstractKeycloakAuthenticatorValve.java:177) ~[spring-boot-container-bundle-11.0.3.jar:11.0.3]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) [tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.39.jar:9.0.39]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_241]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_241]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.39.jar:9.0.39]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_241]
Какие-либо подсказки?
Комментарии:
1. Привет, ты решил решить свою проблему?
2. ДА. Это была проблема с конфигурацией api gateway
3. Приятно слышать, что это не имеет никакого отношения ни к одному из ответов? 🙂 Тогда, я думаю, вы можете просто удалить вопрос
Ответ №1:
Можете ли вы поделиться своим файлом конфигурации? Я надеюсь, что вы использовали адаптер spring keycloak. Вы также можете проверить, создана ли область в вашем пользовательском интерфейсе Keycloak