第 8 章 Vault SPI
8.1. Vault 供应商
您可以使用来自 org.keycloak.vault
软件包的 vault SPI 为红帽构建的 Keycloak 编写自定义扩展,以连接到任意 vault 实现。
内置的 file -plaintext
提供程序是实施此 SPI 的示例。通常适用以下规则:
-
要防止 secret 在域中泄漏,您可能需要隔离或限制域可以检索的 secret。在这种情况下,您的供应商应该在查找 secret 时考虑 realm 名称,例如使用 realm 名称添加条目。例如,表达式
${vault.key}
将通常评估不同的条目名称,具体取决于它在域 A 还是 realm B 中使用。要区分域,需要从VaultProvider
Factory.create ()KeycloakSession
参数中获得。 -
vault 供应商需要实施单一方法 get
Secret
,它为给定机密名称返回VaultRawSecret
。该类以byte[]
或ByteBuffer
为单位包含 secret 的表示,并期望根据需要在两个之间进行转换。请注意,这个缓冲区将在使用量后丢弃,如下所述。
有关如何打包和部署自定义提供程序的详情,请参考 服务提供商接口 章节。