Keycloak 和 Vault 与客户端角色集成

标签 keycloak hashicorp-vault

我正在尝试将 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 Add Builtin

然后在搜索中找到群组并添加 enter image description here

在此之后,在您的 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/

相关文章:

api - 使用 Keycloak REST API 创建客户端时出现未知错误

jenkins - 获取所有 secret 并将其放入 Jenkins 和 hashicorp 保险库的 env 文件中

jenkins-pipeline - 如何在管道中访问 Vault 凭据

docker - 通过Vault Docker镜像运行时,无法 curl 到以服务器模式运行的Vault服务器

Django 我应该在单独的 django 应用程序中管理用户吗?

ssl - wildfly 与 keycloak 403 禁止错误集成

django - mozilla-django-oidc 与 django 3 上的 keycloak

react-native - 将 Keycloak 与 native react 一起使用

backup - 带文件后端的 Hashicorp Vault 备份

kubernetes - Kubernetes 上的 CA 证书和 JWT token