Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring引导配置——keyClope_Spring Boot_Keycloak - Fatal编程技术网

Spring boot Spring引导配置——keyClope

Spring boot Spring引导配置——keyClope,spring-boot,keycloak,Spring Boot,Keycloak,控制器: package com.example.ex.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller

控制器:

    package com.example.ex.controller;

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;


    @Controller
    @RequestMapping(value="/")
    public class KeycloakController {


        @RequestMapping(value="/", method=RequestMethod.GET)
        public String adminPage() {
            return "redirect:admin.html";
        }

        @RequestMapping(value="/user", method=RequestMethod.GET)
        public String userPage() {
            return "redirect:user.html";
        }
    }
这是application.properties文件

keycloak.realm = finaltest
keycloak.auth-server-url = http://localhost:8180/auth
keycloak.resource = ex
keycloak.public-client=false
keycloak.enabled=true
keycloak.credentials.secret=2462fa5e-2f23-496f-a28f-b13ad7948999
keycloak.ssl-required = external
#keycloak.bearer-only=true
#keycloak.policy-enforcer-config.enforcement-mode=ENFORCING
#keycloak.principal-attribute=preferred_username
keycloak.autodetect-bearer-only=true
keycloak.use-resource-role-mappings = true
keycloak.security-constraints[0].auth-roles[0]=slave
keycloak.security-constraints[0].auth-roles[1]=master
keycloak.security-constraints[0].security-collections[0].patterns[0]=/*
keycloak.policy-enforcer-config.enforcement-mode=ENFORCING
keycloak.policy-enforcer-config.paths[0].path=/admin
#keycloak.use-resource-role-mappings=true
keydape.json:

{
  "realm": "finaltest",
  "auth-server-url": "http://localhost:8180/auth",
  "ssl-required": "external",
  "resource": "ex",
  "credentials": {
    "secret": "2462fa5e-2f23-496f-a28f-b13ad7948999"
  },
  "use-resource-role-mappings": true,
  "confidential-port": 0,
  "policy-enforcer": {}
}
堆栈跟踪错误:

java.lang.RuntimeException: Could not obtain configuration from server [http://localhost:8180/auth/realms/finaltest/.well-known/uma-configuration].
            at org.keycloak.authorization.client.AuthzClient.<init>(AuthzClient.java:92) ~[keycloak-authz-client-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.authorization.client.AuthzClient.create(AuthzClient.java:64) ~[keycloak-authz-client-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.authorization.PolicyEnforcer.<init>(PolicyEnforcer.java:61) ~[keycloak-adapter-core-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.KeycloakDeploymentBuilder.internalBuild(KeycloakDeploymentBuilder.java:143) ~[keycloak-adapter-core-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.KeycloakDeploymentBuilder.build(KeycloakDeploymentBuilder.java:169) ~[keycloak-adapter-core-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver.resolve(KeycloakSpringBootConfigResolver.java:37) ~[keycloak-spring-boot-adapter-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:88) ~[keycloak-adapter-core-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.PreAuthActionsHandler.preflightCors(PreAuthActionsHandler.java:107) ~[keycloak-adapter-core-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:79) ~[keycloak-adapter-core-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.invoke(AbstractKeycloakAuthenticatorValve.java:177) ~[spring-boot-container-bundle-3.4.2.Final.jar:3.4.2.Final]
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) ~[tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.34.jar:8.5.34]
            at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
        Caused by: org.keycloak.authorization.client.util.HttpResponseException: Unexpected response from server: 404 / Not Found
            at org.keycloak.authorization.client.util.HttpMethod.execute(HttpMethod.java:95) ~[keycloak-authz-client-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.authorization.client.util.HttpMethodResponse$2.execute(HttpMethodResponse.java:48) ~[keycloak-authz-client-3.4.2.Final.jar:3.4.2.Final]
            at org.keycloak.authorization.client.AuthzClient.<init>(AuthzClient.java:90) ~[keycloak-authz-client-3.4.2.Final.jar:3.4.2.Final]
            ... 22 common frames omitted
java.lang.RuntimeException:无法从服务器获取配置[http://localhost:8180/auth/realms/finaltest/.well-已知/uma配置]。
在org.keydove.authorization.client.AuthzClient.(AuthzClient.java:92)~[keydove-authz-client-3.4.2.Final.jar:3.4.2.Final]
在org.keydove.authorization.client.AuthzClient.create(AuthzClient.java:64)~[keydove-authz-client-3.4.2.Final.jar:3.4.2.Final]
在org.keydove.adapters.authorization.PolicyEnforcer.(PolicyEnforcer.java:61)~[keydove-adapter-core-3.4.2.Final.jar:3.4.2.Final]
在org.keydeport.adapters.keydeploymentbuilder.internalBuild(keydeploymentbuilder.java:143)~[keydeport-adapter-core-3.4.2.Final.jar:3.4.2.Final]
在org.keydeport.adapters.keydeploymentbuilder.build(keydeploymentbuilder.java:169)~[keydeport-adapter-core-3.4.2.Final.jar:3.4.2.Final]
在org.keydeport.adapters.springboot.keydepospringbootconfigresolver.resolve(keydepospringbootconfigresolver.java:37)~[keydeport-spring-boot-adapter-3.4.2.Final.jar:3.4.2.Final]
在org.keydeport.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:88)~[keydeport-adapter-core-3.4.2.Final.jar:3.4.2.Final]
在org.keydeave.adapters.preauthoctionshandler.preflightCors(preauthoctionshandler.java:107)~[keydeave-adapter-core-3.4.2.Final.jar:3.4.2.Final]
在org.keydape.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:79)~[keydape-adapter-core-3.4.2.Final.jar:3.4.2.Final]
在org.keydeport.adapters.tomcat.abstractkeydepeauthenticatorvalve.invoke(abstractkeydepeauthenticatorvalve.java:177)~[spring-boot-container-bundle-3.4.2.Final.jar:3.4.2.Final]
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)~[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)[tomcat-embed-core-8.5.34.jar:8.5.34]
位于org.apache.tomcat.util.net.niodendpoint$SocketProcessor.doRun(niodendpoint.java:1498)[tomcat-embed-core-8.5.34.jar:8.5.34]
在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)[tomcat-embed-core-8.5.34.jar:8.5.34]
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[na:1.8.0_181]
在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[na:1.8.0_181]
位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-8.5.34.jar:8.5.34]
在java.lang.Thread.run(Thread.java:748)[na:1.8.0_181]
原因:org.keydape.authorization.client.util.HttpResponseException:来自服务器的意外响应:404/未找到
在org.keydepot.authorization.client.util.HttpMethod.execute(HttpMethod.java:95)~[keydepot-authz-client-3.4.2.Final.jar:3.4.2.Final]
在org.keydepot.authorization.client.util.HttpMethodResponse$2.execute(HttpMethodResponse.java:48)~[keydepot-authz-client-3.4.2.Final.jar:3.4.2.Final]
在org.keydove.authorization.client.AuthzClient.(AuthzClient.java:90)~[keydove-authz-client-3.4.2.Final.jar:3.4.2.Final]
... 省略22个公共帧
那么,我该怎么做才能摆脱这些错误呢? 我只是在集成SpringBoot应用程序和KeyClope时遇到了一些问题


是否有必要在应用程序的资源中包含keydove.json文件?

您最好使用spring boot 2适配器(版本高于2.0.0)和最新版本的keydove(4.5.0或4.6.0),因为它具有向后兼容性。

您可以共享堆栈跟踪中的更多详细信息吗。是的,添加了更多详细信息域finaltest是否存在于您的本地密钥斗篷中?是的,我必须在密钥斗篷中配置某些内容吗?您只需确保域finaltest存在并且资源ex已在您的密钥斗篷中配置。尝试使用此最低配置进行测试:keydove.realm=finaltest keydove.auth服务器url=keydove.resource=ex keydove.credentials.secret=2462fa5e-2f23-496f-a28f-b13ad7948999 keydove.bearer only=true keydove.public client=false keydove.cors=true keydove.enabled=true keydove.ssl必需=外部