Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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
Java 如何将get请求中生成的keyClope令牌传递给RESTAPI?_Java_Jetty_Openid_Keycloak - Fatal编程技术网

Java 如何将get请求中生成的keyClope令牌传递给RESTAPI?

Java 如何将get请求中生成的keyClope令牌传递给RESTAPI?,java,jetty,openid,keycloak,Java,Jetty,Openid,Keycloak,我正在使用KeyClope对用户进行身份验证。我用过 KeycloakInstalled keycloak = new KeycloakInstalled(config); 在第一个应用程序中,我能够对用户进行身份验证并生成令牌 现在在下一步中,我想使用这个令牌在第二个应用程序中验证我的RESTAPI(两个应用程序运行在同一台服务器上,只是不同的端口)。为此,在我的第二个应用程序中,我在约束映射中添加了角色'*' ServletContextHandler context = new Serv

我正在使用KeyClope对用户进行身份验证。我用过

KeycloakInstalled keycloak = new KeycloakInstalled(config);
在第一个应用程序中,我能够对用户进行身份验证并生成令牌

现在在下一步中,我想使用这个令牌在第二个应用程序中验证我的RESTAPI(两个应用程序运行在同一台服务器上,只是不同的端口)。为此,在我的第二个应用程序中,我在约束映射中添加了角色'*'

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS | org.eclipse.jetty.servlet.ServletContextHandler.SECURITY );

ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler();
context.setSecurityHandler(securityHandler);
securityHandler.addRole("*");
ConstraintMapping constraintMapping = new ConstraintMapping();
constraintMapping.setPathSpec("/*");
Constraint constraint = new Constraint();

constraint.setAuthenticate(true);
constraint.setRoles(new String[]{"*"});
constraintMapping.setConstraint(constraint);
securityHandler.addConstraintMapping(constraintMapping);

KeycloakJettyAuthenticator keyCloakAuthenticator = new KeycloakJettyAuthenticator();
AdapterConfig keyCloakConfig = new org.keycloak.representations.adapters.config.AdapterConfig();

keyCloakConfig.setRealm("myRealm");
keyCloakConfig.setAuthServerUrl("http://172.23.49.9:8180/auth");
keyCloakConfig.setSslRequired("none");
keyCloakConfig.setResource("my_resource");
Map<String,Object> credentials = new HashMap<String,Object>();
credentials.put("secret", "xxxxx-xxxxx-xx-877b-ssefssss");
keyCloakConfig.setCredentials(credentials);

keyCloakAuthenticator.setAdapterConfig(keyCloakConfig);

context.getSecurityHandler().setAuthenticator(keyCloakAuthenticator);
我犯了哪些错误

这是传递生成的令牌的正确方法吗:
/code=generated_-token


注意:我已确保两个应用程序中的keydepot配置完全相同。

发送keydepot生成的令牌的正确方法是在HTTP头中:

Authorization: Bearer {generated_token}

Authorization: Bearer {generated_token}