You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义Hashi Vault JWT核心声明及获取JWK公钥集?

自定义Hashi Vault OIDC JWT核心声明的方法

一、修改iss(签发者)声明

Hashi Vault默认的iss值基于其api_addr配置,你可以通过两种方式自定义:

  • 全局配置修改:更新Vault的api_addr为你的自定义域名(比如https://vault.yourdomain.com),重启后OIDC生成的iss会自动使用该地址。
  • OIDC提供商级配置:创建OIDC提供商时直接指定issuer参数:
    vault write identity/oidc/provider/your-provider-name \
      issuer="https://your-custom-issuer-domain/v1/identity/oidc" \
      allowed_client_ids="your-client-id"
    

二、自定义aud(受众)声明

在创建OIDC客户端时,直接指定audience参数为你的应用标识即可:

vault write identity/oidc/client/your-client-name \
  client_id="your-client-id" \
  client_secret="your-client-secret" \
  audience="your-app-audience" \
  redirect_uris="https://your-app-callback-url"

生成的JWT中aud字段会自动设置为该值。

三、自定义sub(主体)声明

要实现可读的sub值,需结合实体元数据和令牌策略模板:

  1. 给实体添加自定义元数据:
    vault write identity/entity/id/<你的实体ID> \
      metadata=username="jane-smith" \
      metadata=employee_id="EMP-12345"
    
  2. 创建自定义令牌策略模板:
    创建一个包含自定义sub的模板文件(比如custom_token_template.hcl):
    {
      "iss": "{{ issuer }}",
      "aud": "{{ audience }}",
      "sub": "{{ entity.metadata.username }}",
      "exp": "{{ expiration }}",
      "iat": "{{ issued_at }}",
      "namespace": "{{ namespace }}"
    }
    
  3. 将模板关联到OIDC客户端:
    vault write identity/oidc/client/your-client-name \
      token_template="@custom_token_template.hcl"
    
    后续生成的JWT中sub会替换为实体元数据里的username值。

JWK公钥集URL

Hashi Vault会自动为每个OIDC提供商生成JWK公钥集,URL格式为:

https://your-vault-domain/v1/identity/oidc/provider/<你的提供商名称>/jwks

你的应用可以通过该URL获取公钥,用于验证JWT的签名有效性。


内容的提问来源于stack exchange,提问作者theory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 22:45:56