为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 istio mTLS 设置中执行 GRPC 身份验证?

如何在 istio mTLS 设置中执行 GRPC 身份验证?

Go
不负相思意 2022-09-05 17:00:28
我有一堆GRPC微服务,它们使用自签名证书。我将身份验证信息添加到 GRPC 通道,然后用于标识终结点并提供正确的服务。现在我想迁移到 Istio mTLS。在第一阶段,我让 Istio 绕过所有 GRPC 连接,我的服务可以像现在一样工作。在第二阶段,我想将TLS移交给Istio,但我被困在如何将身份验证信息传递给GRPC?你们在 Istio mTLS 设置中如何处理身份验证?GRPC 可以支持其他身份验证机制 是否有人用它来将 Istio 身份验证信息注入 GRPC?有关如何在设置中实现此目的的任何其他建议我正在使用go-lang,以防万一这可以用于提供任何其他信息。谢谢
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

执行此操作的一种方法是使用 ,这样您就不必向服务添加证书,因为 Pod 中的容器将 TLS 终止任何传入连接。grpc.WithInsecure()istio-proxy


客户端:


conn, _ := grpc.Dial("localhost:50051", grpc.WithInsecure())

服务器端:


s := grpc.NewServer()

lis, _ := net.Listen("tcp", "localhost:50051")


// error handling omitted

s.Serve(lis)

如果仍需要将 TLS 用于本地部署等,则只需使用配置选项即可指定此内容,例如:


var conn *grpc.ClientConn

var err error

// error handling omitted do not copy paste


if ( config.IstioEnabled ) {

    conn, err = grpc.Dial("localhost:50051", grpc.WithInsecure())


} else {

    creds, _ := credentials.NewClientTLSFromFile(certFile, "")

    conn, err = grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds))


}


查看完整回答
反对 回复 2022-09-05
?
aluckdog

TA贡献1847条经验 获得超7个赞

我通过为我的请求生成 JWT 令牌来解决此问题,并使用拦截器注入令牌。从GRPC拦截器中获取灵感,用于jwt授权


查看完整回答
反对 回复 2022-09-05
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信