如何获取用于在我的 Rust Tonic 服务中进行身份验证的客户端证书?

Posted

技术标签:

【中文标题】如何获取用于在我的 Rust Tonic 服务中进行身份验证的客户端证书?【英文标题】:How to obtain client certificate used to authenticate in my Rust Tonic service? 【发布时间】:2021-06-17 13:11:32 【问题描述】:

在我的 Rust Tonic 设置中,我在客户端和服务器之间配置了 mTLS(相互 TLS)身份验证。

现在,我想使用存储在客户端证书中的数据 a) 用于授权访问(拦截器) b) 用于提供服务(即,如果 Petr 正在连接,我想查看 Hello Petr

我找不到任何关于此的示例,遍历 Tonic 源代码也没有帮助。

【问题讨论】:

【参考方案1】:

在不和谐频道tokio/tonic 上询问后,我得到了解决方案(感谢 Lucio Franco!),还发现实际上补品的一个例子(是的,我的研究不够好)。

对于任何感兴趣的人,这是示例代码: https://github.com/hyperium/tonic/blob/master/examples/src/tls_client_auth/server.rs

简要总结:

为服务生成的每个方法中提供的request参数,包含返回所有用户证书的参数peer_certs()。

然后可以迭代这些,并解析它们的字节。我使用了 crate x509-parser,它对我很有用,但其他人可能也可以使用。

【讨论】:

以上是关于如何获取用于在我的 Rust Tonic 服务中进行身份验证的客户端证书?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nuxt 中进行动态导入?

如何跳过更新帐户名和密码以在 zencart 1.5.1 中进入管理页面

Tonic.PHP 关于具有“/resource”和“/resource/id”URL 的

我在 asp.net MVC 中进行会话处理它在查看页面按钮上工作我无法在我的控制器中的另一个操作上获得会话 [重复]

使用 DTrace 在 Rust 上获取堆栈跟踪/分析数据

例如,是不是可以在手机上打开游戏,或者在我的应用程序中进入图库?