JWT令牌的sub声明应使用什么值?WSO2 Identity Server使用疑问
WSO2 Identity Server JWT相关问题解答
1. sub声明取值选择说明
根据RFC7519 JWT规范要求,sub(subject)声明的核心要求是在令牌颁发者(iss)的作用范围内唯一、且可稳定标识令牌对应的主体,没有强制要求必须使用用户名或用户ID。
- 旧系统将用户ID存入sub声明的做法完全符合规范,不存在正确性问题。
- 取值选择建议:
- 若现有业务系统已经存在大量基于sub解析用户ID的逻辑,优先选择用户ID作为sub取值,避免旧系统改造适配成本。
- 若你的业务支持用户修改用户名,必须选择不可变更的用户ID作为sub取值,避免用户改名后历史令牌出现主体匹配错误。
- 若为无历史包袱的全新业务、且用户名全局唯一永久不变,可直接使用WSO2默认的用户名作为sub取值,无需额外修改配置。
如果需要调整WSO2 IS生成的访问令牌sub取值,可通过自定义声明提供者、或修改deployment.toml中的令牌声明映射规则实现。
2. subject声明URI配置生效范围说明
该表现属于预期行为。WSO2 Identity Server中,服务提供商配置的subject声明URI是OIDC协议下针对ID Token的专属配置项,仅作用于ID Token的生成逻辑,和OAuth 2.0访问令牌的声明生成逻辑相互独立,因此不会对访问令牌产生影响。
如果需要修改访问令牌的sub映射规则,需要单独配置访问令牌的声明映射,或扩展令牌生成处理程序实现。
内容的提问来源于stack exchange,提问作者Mark Schenk
相关产品推荐
相关产品推荐

