• 带你十天轻松搞定 Go 微服务系列(七)


    序言

    我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:

    1. 环境搭建
    2. 服务拆分
    3. 用户服务
    4. 产品服务
    5. 订单服务
    6. 支付服务
    7. RPC 服务 Auth 验证(本文)
    8. 服务监控
    9. 链路追踪
    10. 分布式事务

    期望通过本系列带你在本机利用 Docker 环境利用 go-zero 快速开发一个商城系统,让你快速上手微服务。

    完整示例代码:https://github.com/nivin-studio/go-zero-mall

    首先,我们来看一下整体的服务拆分图:

    7 RPC服务 Auth 验证

    在前面几章我们已经分别实现了 user product order payrpc 服务和 api 服务。在 api 服务中我们使用 go-zero 框架自带的 jwt 实现鉴权验证。那么接下里我们就说说 rpc 服务的 auth 验证。

    go-zero 框架 rpc 服务的 auth 验证原理是,客户端访问 rpc 服务需要携带 App 标识以及 Token 值,rpc 服务会从指定的 Redis 服务中验证 App 标识和 Token 值是否正确。所以客户端的 App 标识,Token 值,是需要提前打入 Redis 服务中。

    7.1 开启 rpc 服务 auth 验证

    下面我们以 user rpc 服务,和 user api 服务为例,来开启并使用 rpc 服务的 auth 验证

    • 进入服务工作区
    $ cd mall/service/user
    
    • 修改 user rpc user.yaml 配置文件
    $ vim rpc/etc/user.yaml
    
    Name: user.rpc
    ListenOn: 0.0.0.0:9000
    
    ...
    
    Auth: true               # 是否开启 Auth 验证
    StrictControl: true      # 是否开启严格模式
    Redis:                   # 指定 Redis 服务
      Key: rpc:auth:user     # 指定 Key 应为 hash 类型
      Host: redis:6379
      Type: node
      Pass:
    
    
    • 修改 user api user.yaml 配置文件
    $ vim api/etc/user.yaml
    
    Name: User
    Host: 0.0.0.0
    Port: 8000
    
    ...
    
    UserRpc:
      App: userapi                          # App 标识
      Token: 6jKNZbEpYGeUMAifz10gOnmoty3TV  # Token 值
      Etcd:
        Hosts:
        - etcd:2379
        Key: user.rpc
    
    • App 标识, Token 值写入 Redis 服务

      App 标识作为 rpc 指定 keyhash keyToken 值作为 hash key 的值。

    • 重启 user rpc 服务
    $ cd mall/service/user/rpc
    $ go run user.go -f etc/user.yaml
    Starting rpc server at 127.0.0.1:9000...
    
    • 重启 user api 服务
    $ cd mall/service/user/api
    $ go run user.go -f etc/user.yaml
    Starting server at 0.0.0.0:8000...
    

    7.2 调试 rpc 服务 auth 验证

    访问 user apilogin 接口,我们可以看到接口能正常的返回结果值。

    那么我们修改,user api user.yaml 配置文件中的 Token 值再次请求接口试试。

    提示:修改 yaml 配置文件需要重启服务才有效

    我们可以从返回的结果中看出,rpc 服务报错了,未经认证,拒绝访问。

    大家可以自己再尝试修改 user rpc user.yaml 配置文件中 StrictControlfalse 看看效果。

    项目地址

    https://github.com/zeromicro/go-zero

    欢迎使用 go-zerostar 支持我们!

    微信交流群

    关注『微服务实践』公众号并点击 交流群 获取社区群二维码。

  • 相关阅读:
    HSV 武胜
    crystalReportViewer+ReceiveCrystalReport.rpt+DataSet.xsd做报表 转 武胜
    Apache Gzip设置
    Linux gsoap 访问Jira
    搜索引擎Senna
    c 条件编译 ifndef解决 gcc multiple define error.
    搜索引擎 apachesolr
    Lucene:基于Java的全文检索引擎简介
    搜索引擎Zend_lucene
    基于应用程序级的Apache认证配置(普通认证篇)
  • 原文地址:https://www.cnblogs.com/kevinwan/p/15854864.html
Copyright © 2020-2023  润新知