基于令牌的身份验证服务编辑

Elastic Stack 安全功能通过使用领域和一个或多个基于令牌的身份验证服务来验证用户。基于令牌的身份验证服务用于验证和管理令牌。您可以将这些令牌附加到发送到 Elasticsearch 的请求中,并将其用作凭据。当 Elasticsearch 收到需要身份验证的请求时,它会首先咨询基于令牌的身份验证服务,然后咨询领域链。

安全功能提供以下内置的基于令牌的身份验证服务,这些服务按咨询顺序列出

service-accounts

The 服务帐户 使用 创建服务帐户令牌 APIelasticsearch-service-tokens CLI 工具来生成服务帐户令牌。

要使用服务帐户令牌,请在请求中包含生成的令牌值,并使用 Authorization: Bearer 标头。

curl -H "Authorization: Bearer AAEAAWVsYXN0aWMvZ...mXQtc2VydmMTpyNXdkYmRib1FTZTl2R09Ld2FKR0F3" https://127.0.0.1:9200/_cluster/health

不要尝试使用服务帐户来验证单个用户。服务帐户只能使用服务令牌进行身份验证,而服务令牌不适用于普通用户。

token-service

令牌服务使用 获取令牌 API 来根据 OAuth2 规范生成访问令牌和刷新令牌。访问令牌是短期令牌。默认情况下,它在 20 分钟后过期,但可以配置为最长持续 1 小时。它可以使用刷新令牌进行刷新,刷新令牌的有效期为 24 小时。访问令牌是承载令牌。您可以通过发送带有 Authorization 标头的请求来使用它,该标头的值为“Bearer ”前缀,后跟访问令牌的值。例如

curl -H "Authorization: Bearer dGhpcyBpcyBub3Qx5...F0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==" https://127.0.0.1:9200/_cluster/health
api-key-service

API 密钥服务使用 创建 API 密钥 API 来生成 API 密钥。默认情况下,API 密钥不会过期。当您发出创建 API 密钥的请求时,您可以为 API 密钥指定过期时间和权限。权限受经过身份验证的用户的权限限制。您可以通过发送带有 Authorization 标头的请求来使用 API 密钥,该标头的值为“ApiKey ”前缀,后跟凭据。凭据是 API 密钥 ID 和 API 密钥的 base64 编码,用冒号分隔。例如

curl -H "Authorization: ApiKey VnVhQ2ZHY0JDZGJrU...W0tZTVhT3g6dWkybHAyYXhUTm1zeWFrd0dk5udw==" https://127.0.0.1:9200/_cluster/health

根据您的用例,您可能需要决定这些服务生成的令牌的有效期。然后,您可以使用此信息来决定使用哪个服务来生成和管理令牌。不限期的 API 密钥可能看起来很容易,但您必须考虑不限期密钥带来的安全隐患。token-serviceapi-key-service 都允许您使令牌失效。请参阅 使令牌失效 API使 API 密钥失效 API

Elasticsearch 8.2 通过 JWT 身份验证 引入了对 JWT 承载令牌的身份验证支持,该身份验证无法通过令牌身份验证服务启用。领域提供零个、一个或多个 JWT 领域的灵活顺序和配置。