首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Java

使用 spring cloud 的时候如何保证每个微服务的安全性呢?

  •  
  •   wz497345846 · 98 天前 · 1476 次点击
    这是一个创建于 98 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是这样想的每个请求都是先到 zuul 网关,然后网关配置好了路由调用,只需要在 zuul 上做权限控制就好了;但是每个微服务还是暴露在网络中,所以每个微服务需要一个简单的验证,只需要判断是 zuul 发送过来的请求。所以我在 zuul 上加了一个 type 为 route 的 ZuulFilter 加了一个头( zuul-authorization )用来验证,每个微服务去检查这个头的内容来判断是否通过,但是现在问题又来了,当一个请求 zuul->serviceA 但是 serviceA 中又调用了 serviceB 时 ,问题来了:serviceA 可以获取 Zuul 设置的头( zuul-authorization )但是 serviceA 通过 fein 调用 ServiceB 的时候不会把 zuul-authorization 传递下去,这样 serviceB 就报没有权限了。 我这个想法是不是太绕了?不知道真实项目中是怎么解决这个问题的

    11 回复  |  直到 2019-07-12 11:12:29 +08:00
        1
    banmuyutian   98 天前
    微服务部署在内网,只对外开放网关不就好了吗
        2
    GM   98 天前
    你可以参考一下 jhipster 是怎么实现的。
        3
    hly9469   98 天前 via iPhone
    我们用 k8s 解决的~
        4
    ErrorMan   98 天前
    其它服务丢内网,zuul 是 API 网关暴露给外面的,其它服务不应该能被正常用户访问
        5
    wz497345846   97 天前
    @ErrorMan
    @banmuyutian 现在用云服务器,搞不成内网
        6
    arrow8899   97 天前
    Service mesh
        7
    CloudnuY   97 天前
    @wz497345846 #5 防火墙加黑白名单就行
        8
    arrow8899   97 天前
    @wz497345846 云服务也有私有云啊,跟局域网是一样的
        9
    ourslay   97 天前
    没有 用 spring-security 的话。就 用 ZuulFilter 来判断 请求路径然后来检查 token 就行了。


    用 spring-security 的话非常简单。加个规则就行

    pathMatchers("/user/**").authenticated()。

    假如:service A 在 zuul 里面映射的 path 是 /user/ 。




    网关后面 service A ,service B .可以不用加鉴权,统一在网关上面鉴权一次就行了。

    Feign 的话就正常调用就行了
        10
    LemonCoo1   97 天前
    如果用 springsecurity 话就上 oauth2 那一套机制,至于你说的请求头问题,用 feign 拦截器实现,具体代码自己 google
        11
    Aresxue   96 天前
    用 feign 提供的拦截器 hook 处理一下,但建议不要用 feign 调用,最好自定义一套类似 RPC 调用的脚手架,核心是用 RestTemplate 发送请求,这样对 http 连接做管理和处理都很方便
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2909 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    ♥ Do have faith in what you're doing.