Skip to content

Commit

Permalink
Take bb7133's advice
Browse files Browse the repository at this point in the history
  • Loading branch information
CbcWestwolf committed Dec 30, 2023
1 parent aea7c4f commit 9c374cd
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions security-compatibility-with-mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ TiDB 的密码重用策略功能与 MySQL 一致,在实现密码重用策略

TiDB 支持多种身份验证方式。通过使用 [`CREATE USER`](/sql-statements/sql-statement-create-user.md) 语句和 [`ALTER USER`](/sql-statements/sql-statement-alter-user.md) 语句,即可创建新用户或更改 TiDB 权限系统内的已有用户。TiDB 身份验证方式与 MySQL 兼容,其名称与 MySQL 保持一致。

TiDB 目前支持的身份验证方式可在以下的表格中查找到。服务器和客户端建立连接时,如要指定服务器对外通告的默认验证方式,可通过 [`default_authentication_plugin`](/system-variables.md#default_authentication_plugin) 变量进行设置。`tidb_sm3_password` 为仅在 TiDB 支持的 SM3 身份验证方式,使用该方式登录的用户需要使用 [TiDB-JDBC](https://github.com/pingcap/mysql-connector-j/tree/release/8.0-sm3)
TiDB 目前支持的身份验证方式可在以下的表格中查找到。服务器和客户端建立连接时,如要指定服务器对外通告的默认验证方式,可通过 [`default_authentication_plugin`](/system-variables.md#default_authentication_plugin) 变量进行设置。`tidb_sm3_password` 为仅在 TiDB 支持的 SM3 身份验证方式,使用该方式登录的用户需要使用 [TiDB-JDBC](https://github.com/pingcap/mysql-connector-j/tree/release/8.0-sm3)`tidb_auth_token` 为用于 TiDB Cloud 内部的基于 JSON Web Token (JWT) 的认证方式,用户通过配置也可以在自托管环境使用。

针对 TLS 身份验证,TiDB 目前采用不同的配置方案。具体情况请参见[为 TiDB 客户端服务端间通信开启加密传输](/enable-tls-between-clients-and-servers.md)

Expand All @@ -133,17 +133,17 @@ TiDB 目前支持的身份验证方式可在以下的表格中查找到。服务

### `tidb_auth_token`

`tidb_auth_token` 是一种基于 [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) 的无密码认证方式,用于 TiDB Cloud 内部用户认证。不同于 `mysql_native_passsword``caching_sha2_password` 等使用密码的认证方式,创建 `tidb_auth_token` 用户时无需设置并保存自定义的密码;使用 `tidb_auth_token` 进行登录时使用签发的 token 进行登录,可以简化用户的认证过程并提升安全性。
`tidb_auth_token` 是一种基于 [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) 的无密码认证方式,用于 TiDB Cloud 内部的用户认证,用户通过配置也可以在自托管环境使用。不同于 `mysql_native_passsword``caching_sha2_password` 等使用密码的认证方式,创建 `tidb_auth_token` 用户时无需设置并保存自定义的密码;使用 `tidb_auth_token` 进行登录时使用签发的 token 进行登录,可以简化用户的认证过程并提升安全性。

JWT 由 header、payloadsignature 三部分组成,每部分使用 base64 编码之后拼接成一个字符串,中间用点号(`.`)分开。
JWT 由 Header、PayloadSignature 三部分组成,每部分使用 base64 编码之后拼接成一个字符串,中间用点号(`.`)分开。

Header 描述 JWT 的元数据,包含 3 个属性:

* `alg`:表示签名使用的算法,默认为 `RS256`
* `typ`:表示 token 的类型,统一为 `JWT`
* `kid`:表示用于生成 token 签名的 key id

下面是一个 header 示例:
下面是一个 Header 示例:

```json
{
Expand All @@ -164,7 +164,7 @@ Payload 是 JWT 的主体部分,保存用户的信息,每个字段就是一

* `email`:邮件地址。创建用户时可以通过 `ATTRIBUTE '{"email": "xxxx@pingcap.com"}` 指定 email 信息。如果创建用户时未指定 email 信息,则该声明应设置为空串;否则应该与设置值相同

下面是几个合法的 payload 示例:
下面是几个合法的 Payload 示例:

```json
{
Expand All @@ -191,7 +191,7 @@ Signature 对上面两部分数据进行签名。

> **警告:**
>
> 1. Header 与 payload 使用 base64 进行编码的过程是可逆的,请勿在 payload 中携带敏感数据
> 1. Header 与 Payload 使用 base64 进行编码的过程是可逆的,请勿在 Payload 中携带敏感数据
> 2. `tidb_auth_token` 认证方式要求客户端支持 [`mysql_clear_password`](https://dev.mysql.com/doc/refman/8.0/en/cleartext-pluggable-authentication.html) 插件,并将 token 以明文的方式发送至 TiDB,因此请[为 TiDB 开启加密传输](/enable-tls-between-clients-and-servers.md) 后再使用 `tidb_auth_token` 进行认证
配置并使用 `tidb_auth_token` 作为 TiDB 用户的认证方式,有以下几个步骤:
Expand Down

0 comments on commit 9c374cd

Please sign in to comment.