我正在尝试将 Keycloak 与 Vault 集成。我有 2 个 Vault 策略(Admin、Dev)。我想使用路径“keycloak”,并完成了$ vault auth enable -path=keycloak oidc
。
我要解决的问题是将 Vault Policy 与 Keycloak Client Role 映射。
$ vault write auth/keycloak/config \
oidc_discovery_url="https://$KEYCLOAK_ADDRESS/auth/realms/master" \
oidc_client_id="vault" \
oidc_client_secret=${CLIENT_SECRET} \
default_role="admin" type="oidc"
$ vault write auth/keycloak/role/admin \
bound_audiences="vault" \
allowed_redirect_uris="https://$VAULT_ADDRESS/ui/vault/auth/oidc/oidc/callback" \
allowed_redirect_uris="https://localhost:8250/oidc/callback" \
user_claim="sub" \
policies="admin" \
ttl=4h \
role_type="oidc" \
oidc_scopes="openid"
$ vault write auth/keycloak/role/dev \
bound_audiences="vault" \
allowed_redirect_uris="https://$VAULT_ADDRESS/ui/vault/auth/oidc/oidc/callback" \
allowed_redirect_uris="https://localhost:8250/oidc/callback" \
user_claim="sub" \
policies="dev" \
ttl=4h \
role_type="oidc" \
oidc_scopes="openid"
我希望 Vault 中的管理员和开发角色绑定(bind)到 Keycloak 中的“vault”客户端。但是,根据用户绑定(bind)的组,我希望用户有不同的策略。 (两者都使用 vault login -method=oidc keycloak
通过控制台登录)
有什么想法吗?我想到的解决方案是制作 2 个不同的客户端。但是,我只想要 1 个客户端“保险库”。这能实现吗?
最佳答案
转到您的客户端,然后转到 Mappers 选项卡,然后按 Add Builtin
在此之后,在您的 jwt token 负载中将出现组部分
然后在你的 vault oidc 配置中配置 groups_claim
$ vault write auth/keycloak/role/admin \
bound_audiences="vault" \
allowed_redirect_uris="https://$VAULT_ADDRESS/ui/vault/auth/oidc/oidc/callback" \
allowed_redirect_uris="https://localhost:8250/oidc/callback" \
user_claim="sub" \
policies="admin" \
ttl=4h \
role_type="oidc" \
oidc_scopes="openid" \
groups_claim="groups"
$ vault write auth/keycloak/role/dev \
bound_audiences="vault" \
allowed_redirect_uris="https://$VAULT_ADDRESS/ui/vault/auth/oidc/oidc/callback" \
allowed_redirect_uris="https://localhost:8250/oidc/callback" \
user_claim="sub" \
policies="dev" \
ttl=4h \
role_type="oidc" \
oidc_scopes="openid" \
groups_claim="groups"
关于Keycloak 和 Vault 与客户端角色集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63226088/