go-zero实战:让微服务Go起来——8 RPC服务 Auth 验证

·  阅读 2736
go-zero实战:让微服务Go起来——8 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 服务中。

8.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 的值。

image.png

  • 重启 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...
复制代码

8.2 调试 rpc 服务 auth 验证

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

image.png

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

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

image.png

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

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

项目地址:github

上一篇《go-zero实战:让微服务Go起来——7 支付服务(pay)》

下一篇《go-zero实战:让微服务Go起来——9 服务监控 Prometheus》

分类:
后端
收藏成功!
已添加到「」, 点击更改