Vault集成SSO/OIDC Authelia:用户组授权与自动登录跳转需求
注意:你提供的Authelia配置中redirect_uris存在拼写错误(vault.examle.com应为vault.example.com),建议先修正该配置并重启Authelia,避免回调失败。
1. 确认Authelia Groups Claim格式
确保Authelia返回的groups claim为字符串数组格式(这是Vault识别组信息的标准格式)。可以通过调用Authelia的userinfo端点或在Vault OIDC配置中开启verbose_oidc_logging验证返回的claims结构。
2. 配置Vault OIDC Claim映射
更新Vault的OIDC认证方法,将Authelia的groups claim映射到Vault内部的groups实体属性:
vault auth tune -oidc-claim-maps=groups:groups auth/oidc
如果Authelia返回的组claim带有自定义前缀(如https://my-authelia-domain/groups),请调整映射关系为对应的完整claim名称。
3. 删除默认角色并创建组绑定角色
先移除原有的默认OIDC角色:
vault delete auth/oidc/role/default
为每个需要授权的LDAP组创建独立的Vault OIDC角色,绑定组信息并关联对应策略。例如为dev-team组创建角色并绑定dev-policy策略:
vault write auth/oidc/role/dev-team \ bound_claims={"groups": "dev-team"} \ allowed_redirect_uris="https://vault.example.com/oidc/callback,https://vault.example.com/ui/vault/auth/oidc/oidc/callback" \ policies=dev-policy \ user_claim="email" \ verbose_oidc_logging=true
重复此步骤为所有需要授权的组创建角色,确保每个角色的bound_claims.groups值与LDAP组名称完全匹配。
4. 验证组授权效果
用户通过Authelia登录Vault后,执行以下命令验证组信息是否正确获取:
vault token lookup -format=json | jq '.data.meta.oidc_groups'
同时可以验证当前token是否拥有对应策略的权限:
vault capability lookup secret/dev/my-key
1. 设置OIDC为默认认证方法
将OIDC认证方法设为Vault的默认登录方式,确保UI优先使用该方法:
vault write sys/ui/mounts/auth/oidc \ description="Authelia OIDC Login" \ default=true
2. 开启Vault UI自动重定向
修改Vault配置文件(vault.hcl),在ui配置段添加redirect_to_auth参数,开启后用户访问Vault UI会自动跳转到默认认证方法的登录页面:
ui = true ui_config { redirect_to_auth = true }
保存配置后重启Vault服务使设置生效。
3. (可选)屏蔽原生登录页面(反向代理方式)
如果需要完全隐藏Vault原生登录页面,可在前端反向代理(如Nginx)中添加重定向规则,直接将根路径请求导向OIDC登录端点:
server { listen 443 ssl; server_name vault.example.com; location / { return 302 https://vault.example.com/ui/vault/auth/oidc/login; } # 保留其他Vault相关路由配置 location /ui { proxy_pass http://localhost:8200/ui; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /v1 { proxy_pass http://localhost:8200/v1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
内容的提问来源于stack exchange,提问作者Forged

