永远爱你. 祝你幸福. ---2023.11.26
常轨脱离 Misanthrope
又是一年冬季
Go 的 gRPC 和 Protocol Buffers---TLS 认证

前言

为了保证 gRPC 服务不被第三方监听和调用, 防止通信被篡改或伪造, 需要对 gRPC 服务添加身份验证机制.

目前 gRPC 内置了三种身份验证机制:

  • SSL/TLS: gRPC 集成了 SSL/TLS, 提倡使用 SSL/TLS 对服务器进行身份验证, 并对客户端与服务器之间交换的所有数据进行加密。同时可选让客户端提供用于相互验证的证书.
  • 基于 Token 的身份验证: gRPC 提供了一种可将基于元数据的凭证附加到请求和响应中的机制. 这种机制必须与 SSL/TLS 同时使用, 以提供完整的身份验证和加密通信.
  • ATLS: Google 自家的双向身份验证和传输安全系统, 通常也用于在 Google 家的平台上构建服务时.

本文介绍 gRPC 中的 SSL/TLS.

Go 的 gRPC 和 Protocol Buffers---Quick Start

Protocol Buffers

Protocol Buffers (Protobuf) 是一种语言无关、平台无关、可扩展的序列化结构化数据的方法, 可以像 XML, json 等一样用于程序间数据通信. 而相较于上列二者, Protobuf 有更高的效率.

使用 Protobuf 需要在 .proto 文件中定义数据结构, 并安装其编译器来生成对应语言的模型. 本文以 Go 为例.

使用conda安装和管理python多版本环境

感觉不如编译安装

Debian/Linux安装最新Python版本及多版本环境管理

Python 的环境管理确实烦,而且会出现版本之间不兼容的情况,所以有必要知道如何安装不同版本的 Python 并管理其环境.

本文系统环境为 Debian11, 虚拟环境工具使用的是 venv, 采用编译安装的方法. Python 版本为 3.11.6

JWT 认证及其在 FastAPI 中的使用

什么是 JWT

JWT: JSON Web Tokens,它是一种将 JSON 对象编码为没有空格,且难以理解的长字符串的标准。在具体上,它就是一段字符串,下面就是 FastAPI 文档中给出的例子

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

抽象地把它看成是这样的

aaaaaaaaaaaa.bbbbbbbbbbbb.cccccccccccc
FastAPI dependency injection system

什么是「依赖注入」 {lang="zh-CN"}

What is "Dependency Injection" {lang="en"}

::: zh-CN

编程中的「依赖注入」是声明代码(本文中为路径操作函数 )运行所需的,或要使用的「依赖」的一种方式。

然后,由系统(本文中为 FastAPI)负责执行任意需要的逻辑,为代码提供这些依赖(「注入」依赖项)。

依赖注入常用于以下场景:

  • 共享业务逻辑(复用相同的代码逻辑)
  • 共享数据库连接
  • 实现安全、验证、角色权限等……

上述场景均可以使用依赖注入,将代码重复最小化。 :::

::: en

"Dependency Injection" means, in programming, that there is a way for your code (in this case, your path operation functions) to declare things that it requires to work and use: "dependencies".

And then, that system (in this case FastAPI) will take care of doing whatever is needed to provide your code with those needed dependencies ("inject" the dependencies).

This is very useful when you need to:

  • Have shared logic (the same code logic again and again).
  • Share database connections.
  • Enforce security, authentication, role requirements, etc.
  • And many other things...

All these, while minimizing code repetition. :::

Valaxy v0.18.5 驱动 | 主题 - Yun v0.18.5
本站已勉强运行0 天0 小时0 分0 秒(ノ`Д)ノ