Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 Spring云网关和Spring安全将经过身份验证的角色传递给微服务_Java_Spring_Spring Boot_Spring Security_Spring Cloud Gateway - Fatal编程技术网

Java Spring云网关和Spring安全将经过身份验证的角色传递给微服务

Java Spring云网关和Spring安全将经过身份验证的角色传递给微服务,java,spring,spring-boot,spring-security,spring-cloud-gateway,Java,Spring,Spring Boot,Spring Security,Spring Cloud Gateway,让我们假设 我们有Spring Boot(2)服务; 微服务A, 微服务B, 微服务 我们希望使用SpringCloudGateway将它们聚合在一起,并在需要特定服务的http路径时进行令牌身份验证 现在假设我们在api网关中进行了身份验证,然后扮演角色等。但我不想逐一允许特定的http路径,如带有ServerHttpSecurity链接的/service-b/public area 相反,我想在microservice B中使用@PreAuthorize(“hasRole(ROLE\u US

让我们假设

我们有Spring Boot(2)服务; 微服务A, 微服务B, 微服务

我们希望使用SpringCloudGateway将它们聚合在一起,并在需要特定服务的http路径时进行令牌身份验证

现在假设我们在api网关中进行了身份验证,然后扮演角色等。但我不想逐一允许特定的http路径,如带有ServerHttpSecurity链接的
/service-b/public area

相反,我想在
microservice B
中使用
@PreAuthorize(“hasRole(ROLE\u USER)”)
对我的映射方法进行注释。 所以我可以在微服务中处理部分独立授权。因为当我有任何任务时,我只需要在特定的微服务上工作

但我找不到任何关于在中传递spring安全角色的文档


关于这个问题,有人能提供一些答案、经验和建议吗?

我认为您应该在网关上进行代理传递,并在每个微服务上对身份验证服务进行身份验证,为了进行身份验证,您可以验证哪些用户是经授权的。@JonathanJohx我不是这个意思,我不想在每个微服务中实现身份验证,而是想将SecurityContext传递给微服务。然后,在传递给微服务之前,需要在网关服务上创建安全逻辑。你可以看看这个链接,让我知道这是否有助于你回答你的问题。