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