经过 kerberos 身份验证后与服务通信

问题描述 投票:0回答:1

我读了几篇有关 Kerberos 身份验证协议的文章,但我忽略了一件事。身份验证成功后,客户端主体如何与服务交互?我读的文章通常不会解释之后发生的事情。例如。关于 Kerberos 的Wikipedia 文章指出,成功验证后“服务器向客户端提供请求的服务”。实际情况如何?假设客户端通过 http 与请求的服务交互,它是否应该在请求的标头中发送某种令牌?

kerberos
1个回答
1
投票

假设客户端通过 http 与请求的服务交互,它是否应该在请求的标头中发送某种令牌?

使用 HTTP,客户端通过与用于基本或承载身份验证相同的

Authorization
请求标头发送 Kerberos 令牌。

通常使用

Negotiate
HTTP 身份验证机制 (RFC 4559) 用于此目的;它通常被称为“SPNEGO”(有时也称为“GSSAPI”)。

GET / HTTP/1.1
Authorization: Negotiate YIIDYAYJKoZIhvcSAQICAQBu...

您可以使用

python-pyspnego
python-gssapi
来尝试创建代币。与不记名令牌不同,它们是一次性的,因此尽管 Kerberos ticket 仅检索一次,但客户端会为每个 HTTP 请求创建一个新令牌。

大多数其他协议也使用相同的令牌格式,但有一些变化(有时使用 SPNEGO,有时不使用;有时 GSSAPI 进入 SASL,有时不),尽管在大多数其他情况下,每个连接仅进行一次身份验证,并且对于整个 TCP 连接(HTTP 是主要例外)。

身份验证之后发生的事情并不是 Kerberos 真正强制要求的——它与验证密码没有什么不同,协议可以按照它想要的任何方式进行。该协议可能使用 Kerberos 进行加密或完整性(即“包装”),同样通常通过 GSSAPI,但大多数协议不这样做,而是依赖于 TLS。 (LDAP、MS-RPC 和 NFS/SunRPC 除外。)

© www.soinside.com 2019 - 2024. All rights reserved.