如何在 istio mTLS 设置中进行 GRPC 身份验证?
来源:stackoverflow
时间:2024-04-19 09:27:36 398浏览 收藏
欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在 istio mTLS 设置中进行 GRPC 身份验证?》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!
我有一堆 GRPC 微服务,它们正在使用自签名证书。我将身份验证信息添加到 GRPC 通道,然后用于识别端点并提供正确的服务。
现在我想迁移到 Istio mTLS。
在第一阶段,我让 Istio 绕过所有 GRPC 连接,我的服务就像现在一样工作。
在第二阶段,我想将 TLS 交给 Istio,但我不知道如何将身份验证信息传递给 GRPC?
如何在 Istio mTLS 设置中处理身份验证?
GRPC 可以支持其他身份验证机制 有人用它来向 GRPC 注入 Istio 身份验证信息吗?关于如何在设置中实现此功能的任何其他建议
我使用 go-lang 以防万一这对于提供任何附加信息有用。
谢谢
正确答案
我通过为我的请求生成 jwt 令牌解决了这个问题,并使用拦截器注入了令牌。从 GRPC interceptor for authorization with jwt 获得灵感
实现此目的的一种方法是使用 grpc.withinsecure(),这样您就不必向服务添加证书,因为 pod 中的 istio-proxy 容器将终止 tls任何传入连接。
客户端:
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))
}
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。
-
502 收藏
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
Golang · Go问答 | 2天前 | 并发 · channel · Mutex · 性能优化 · Go问答 · benchmark · Goroutine channel Mutex 并发性能 锁等待 benchmark Go问答268 收藏
-
Golang · Go问答 | 2天前 | 并发 · map · RWMutex · sync.Map · Go问答 · 数据竞争 RWMutex sync.Map map并发读写 Go问答 concurrent map read and map write291 收藏
-
Golang · Go问答 | 2天前 | 并发 · channel · range · Close · Go问答 · 并发退出 Channel关闭 Go问答 close channel range退出 发送方关闭427 收藏
-
Golang · Go问答 | 2天前 | goroutine · HTTP · Context · 超时控制 · Go问答 · WithTimeout Go问答 context取消 QueryContext HTTP请求取消 goroutine退出120 收藏
-
Golang · Go问答 | 2天前 | goroutine · pprof · Go问答 · 线上排查 · 性能调优 · pprof goroutine泄漏 服务告警 Go问答 context取消 Go线上排查374 收藏
-
Golang · Go问答 | 2天前 | goroutine · Context · 超时控制 · Go问答 · 协程泄漏 · Go Goroutine 超时控制 context.WithTimeout 取消信号 协程泄漏 ctx.Done147 收藏
-
Golang · Go问答 | 2天前 | 闭包 · go · Go问答 · 循环变量 · Go1.22 · 代码迁移 · 闭包 循环变量 go vet Go问答 Go 1.22 for range loopclosure356 收藏
-
127 收藏
-
449 收藏
-
Golang · Go问答 | 3天前 | sync.Pool · reset · 对象复用 · Go问答 · 线上排查 · Go sync.Pool Go问答 sync.Pool串数据 Reset清理 对象池复用342 收藏
-
Golang · Go问答 | 3天前 | 标准库 · 文件读取 · io.Reader · Go问答 · io.EOF · Go read io.Reader io.EOF Go问答 n err 读取循环486 收藏
-
181 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习