Spring Cloud Docker密钥斗篷HTTP 401从API网关到服务的未授权错误



在Docker上运行的Spring Cloud示例中,我遇到了一个通过Key斗篷创建用户的问题。

当我通过这个urlhttp://localhost:8600/api/v1/users/signup(从api网关到用户服务(发出请求时,我在控制台上收到了这个问题。

下面显示了错误。

2022-08-24 10:45:22.610  INFO 1 --- [nio-9000-exec-1] c.s.u.controller.UserController          : UserController | signUpUser is started
2022-08-24 10:45:22.610  INFO 1 --- [nio-9000-exec-1] c.s.u.controller.UserController          : UserController | signUpUser | SignUpRequest role : ROLE_USER
2022-08-24 10:45:22.610  INFO 1 --- [nio-9000-exec-1] c.s.u.controller.UserController          : UserController | signUpUser | SignUpRequest email : springbootmicroserviceuser@user.com
2022-08-24 10:45:22.611  INFO 1 --- [nio-9000-exec-1] c.s.u.controller.UserController          : UserController | signUpUser | SignUpRequest name : Micro User
2022-08-24 10:45:22.623  INFO 1 --- [nio-9000-exec-1] c.s.u.service.impl.UserServiceImpl       : UserServiceImpl | signUpUser is started
2022-08-24 10:45:22.627  INFO 1 --- [nio-9000-exec-1] c.s.u.service.impl.KeycloakServiceImpl   : KeycloakServiceImpl | createUserWithKeycloak is started
2022-08-24 10:45:22.763 ERROR 1 --- [nio-9000-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw excepti
on [Request processing failed; nested exception is javax.ws.rs.ProcessingException: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized] with root cause
javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized

这里是在用户服务中定义的keycapture配置类。

@Configuration
public class KeycloakConfig {
public final static String serverUrl = "http://keycloak:8080";
public final static String realm = "master";
public final static String clientId = "spring-boot-microservice-keycloak";
public final static String clientSecret = "ZDyqUYwec1qUeTdxiM2Ym99KiPE73vzU";
final static String userName = "admin";
final static String password = "admin";
@Bean
public KeycloakConfigResolver keycloakConfigResolver(){
return new KeycloakSpringBootConfigResolver();
}
@Bean
public Keycloak keycloak(){
return Keycloak.getInstance(serverUrl,
realm,
userName,
password,
clientId,
clientSecret);
}
}

这是docker-compose.yml 的密钥斗篷部分

keycloak:
image: quay.io/keycloak/keycloak:18.0.2
environment:
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=admin
ports:
- "8181:8080"
networks:
- backend
command:
- start-dev

这是我的项目链接:链接

您正试图调用不同于Key斗篷暴露的端口(8080((8181(。尝试将serverUrl更改为";http://keycloak:8181"。

最新更新