Spring Boot OAuth2 - 无需从指定地址进行身份验证即可访问受保护资源

时间:2018-02-25 15:08:56

标签: spring-boot oauth-2.0

我有一个问题。我想使用Spring Boot创建简单的微服务应用程序。我有两个微服务: auth-serivce ,端口 8001 ,用于验证用户和返回令牌, db-service ,端口 8002 < / strong>,从数据库中检索数据。在 db-service 我有一个简单的休息控制器,在这个控制器中我有一个方法,巫婆通过用户名找到用户,但默认情况下这个方法是安全的,我想从< strong> auth-service ,无需身份验证。怎么做?

这是一个例子

DbServiceController.java

@RestController
public class DbServiceController {

    /**
     * This method is secured by default, so if I want to
     * access to this resouce I need to have a token,
     * but I want to prevent authentication for auth-service,
     * because I want to retrieve token by user, which was provided by this microservice
     */
    @RequestMapping(value = "user", method = RequestMethod.GET)
    public User findByUsername(@RequestParam("username") String username) {
        return new User("john", "doe", new String[] {"ROLE_USER"});
    }

}

感谢您的所有答案。

1 个答案:

答案 0 :(得分:0)

考虑API网关模式:

http://microservices.io/patterns/apigateway.html

https://howtodoinjava.com/spring/spring-cloud/spring-cloud-api-gateway-zuul/

API网关可以将不同的请求路由到不同的微服务,例如:

  • 请求:http://yourhost.com /用户可以路由到一个微服务:http:// microservice1 / users

    < / LI>
  • 请求:http://yourhost.com / data 可以路由到另一个微服务:http:// another-microservice / data

您还可以在API网关上实现安全性,并使其成为唯一可供用户使用的服务。因此,在这种情况下,所有微服务都可以在没有安全性的私有网络中进行通信,但用户将在API网关上进行身份验证。如果您不存储敏感数据就足够了。在其他情况下,我建议观看此视频:https://www.youtube.com/watch?v=dq4RzFdm1Y0,解释如何正确保护微服务。