gRPC认证的多种方式实践(排版整理)
Posted 技术人技术事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gRPC认证的多种方式实践(排版整理)相关的知识,希望对你有一定的参考价值。
gRPC安全认证介绍
gRPC被设计成可以利用插件的形式支持多种授权认证机制,你可以采用自己喜欢的,简单的,认为方便的一种方式,选择权在用户手里
支持的授权认证机制如下
SSL/TLS认证
自定义Token认证
SSL/TLS的概念可以参考下面的文章
https://www.techug.com/post/https-ssl-tls.html
SSL/TLS认证方式
首先通过openssl生成证书和私钥,命令如下
服务端如下
客户端如下
如上就开启了gRPC的TLS认证
Token认证
我们先看一个gRPC提供我们的一个接口,这个接口中有两个方法,接口位于credentials 包下,这个接口需要客户端来实现
第一个方法作用是获取元数据信息,也就是客户端提供的key,value对,context用于控制超时和取消,uri是请求入口处的uri
第二个方法的作用是否需要基于 TLS 认证进行安全传输,如果返回值是true,则必须加上TLS验证,返回值是false则不用
客户端端实现接口,代码如下
客户端按照如下方式使用
服务端按照如下方式校验,当然我们也可以使用拦截器的形式对每个方法进行拦截,而不是像如下在每个方法中硬编码似的。
总结
gRPC将各种认证方式浓缩统一到一个凭证(credentials)上,可以单独使用一种凭证,比如只使用TLS凭证或者只使用自定义凭证,也可以多种凭证组合,gRPC提供统一的API验证机制,使研发人员使用方便,这也是gRPC设计的巧妙之处
思考
真的需要在每一个服务实现处做认证吗?能不能通过拦截器来做?gRPC拦截器你会了吗?下篇解答
以上是关于gRPC认证的多种方式实践(排版整理)的主要内容,如果未能解决你的问题,请参考以下文章
基于 JWT + Refresh Token 的用户认证实践
整理在Spring IOC容器初始化后可以处理特定逻辑的多种实现方式