Весенний ботинок и брелок
У меня есть файл keycloak.json в папке WEB-INF, но когда я запускаю свое приложение, я получаю следующее исключение:
java.lang.RuntimeException: Must set 'realm' in config
Полный стек этого исключения:
java.lang.RuntimeException: Must set 'realm' in config at org.keycloak.adapters.KeycloakDeploymentBuilder.internalBuild(KeycloakDeploymentBuilder.java:53) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.KeycloakDeploymentBuilder.build(KeycloakDeploymentBuilder.java:152) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver.resolve(KeycloakSpringBootConfigResolver.java:37) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:88) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.PreAuthActionsHandler.preflightCors(PreAuthActionsHandler.java:107) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:79) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.invoke(AbstractKeycloakAuthenticatorValve.java:183) ~Java lang runtimeexception must set realm in config at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) ~[tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-embed-core-8.5.5.jar:8.5.5] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.5.jar:8.5.5] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.5.jar:8.5.5] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
Этот код является лишь примером интеграции между Spring boot и Keycloak.
Подскажите, пожалуйста, что я делаю не так?
Спасибо за ваш ответ и время.
2 ответа
Если вы используете адаптер keycloak с пружинной загрузкой 2 или пружинной загрузкой 1.5, вы должны указать ниже свойства в файле application.properties или application.yaml
keycloak.auth-server-url=http://localhost:8180/auth keycloak.realm=abc keycloak.resource=movie-app keycloak.public-client=false keycloak.principal-attribute=preferred_username
Если ошибка не исчезнет, напишите об ошибке, я поделюсь кодом:)
Несмотря на то, что это хороший и действительный пример, который датируется 2015 годом. Я считаю, что он использует Keycloak 1.2.0, который полностью устарел. Здесь есть множество примеров с Spring. Большинство из них в курсе последних изменений.
Я предлагаю взглянуть на эти примеры и прочитать документы.
Блог
java.lang.RuntimeException: необходимо установить «область» в конфигурации
#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:
org.keycloak keycloak-spring-boot-starter 11.0.3
Когда я пытаюсь вызвать свои ресурсы 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) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.KeycloakDeploymentBuilder.build(KeycloakDeploymentBuilder.java:202) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver.resolve(KeycloakSpringBootConfigResolver.java:41) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.springsecurity.config.KeycloakSpringConfigResolverWrapper.resolve(KeycloakSpringConfigResolverWrapper.java:40) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:89) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.PreAuthActionsHandler.preflightCors(PreAuthActionsHandler.java:100) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:75) ~Java lang runtimeexception must set realm in config 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
java.lang.RuntimeException: необходимо установить «область» в конфигурации
Я создал микросервис Spring и пытаюсь проверить токен jwt, созданный с помощью keycloak.
Мой файл application.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:
org.keycloak keycloak-spring-boot-starter 11.0.3
Когда я пытаюсь вызвать свои ресурсы 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) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.KeycloakDeploymentBuilder.build(KeycloakDeploymentBuilder.java:202) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver.resolve(KeycloakSpringBootConfigResolver.java:41) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.springsecurity.config.KeycloakSpringConfigResolverWrapper.resolve(KeycloakSpringConfigResolverWrapper.java:40) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:89) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.PreAuthActionsHandler.preflightCors(PreAuthActionsHandler.java:100) ~Java lang runtimeexception must set realm in config at org.keycloak.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:75) ~Java lang runtimeexception must set realm in config 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]