52.3. SASL 验证

SASL 验证消息流

出现错误时,服务器可以在任何阶段中止身份验证,并发送 ErrorMessage。

52 .3.1. SCRAM-SHA-256 身份验证

在 PostgreSQL 中使用 SCRAM-SHA-256 时,服务器将忽略 Client 端在client-first-message中发送的用户名。而是使用已经在启动消息中发送的用户名。 PostgreSQL 支持多种字符编码,而 SCRAM 规定将 UTF-8 用作用户名,因此可能无法用 UTF-8 表示 PostgreSQL 用户名。

SCRAM 规范规定该密码也是 UTF-8,并且使用* SASLprep *算法进行处理。但是,PostgreSQL 不需要使用 UTF-8 作为密码。设置用户密码后,无论使用哪种实际编码,都将使用 SASLprep 对其进行处理,就像使用 UTF-8 一样。但是,如果它不是合法的 UTF-8 字节序列,或者包含 SASLprep 算法禁止的 UTF-8 字节序列,则将使用原始密码而不进行 SASLprep 处理,而不会引发错误。这样可以使密码在 UTF-8 中时被规范化,但是仍然允许使用非 UTF-8 密码,并且不需要系统知道密码的 encodings。

尚未实施 Channels 绑定

Example

上一章 首页 下一章