微服务安全基础全解析
1. JWT 声明集与签名
JWT(JSON Web Token)声明集是一个 JSON 对象,其成员是 JWT 发行者所声明的声明项。JWT 内的每个声明名称必须唯一,若有重复声明名称,JWT 解析器要么返回解析错误,要么仅返回包含最后一个重复声明的声明集。JWT 规范并未明确规定哪些声明是必需的,哪些是可选的,这取决于 JWT 的具体应用。例如,OpenID Connect 规范定义了必需和可选的声明,其中 iss、sub、add、exp 和 iat 被视为必需元素,而 auth_time、nonce、acr、amr 和 azp 是可选元素。除了规范中定义的必需和可选声明外,令牌发行者还可以在 JWT 声明集中包含额外元素。
JWT 的第三部分是签名,同样采用 base64url 编码。与签名相关的加密元素在 JOSE 头部中定义。在特定示例中,发行的令牌使用 RSASSA - PKCS1 - V1_5 与 SHA - 256 哈希算法,这在 JOSE 头部的 alg 元素值中表示为 RS256。签名是针对 JWS 的前两部分——JOSE 头部和 JWT 声明集计算的。
2. 信任传播与用户身份
用户上下文可以通过 JWS(JSON Web Signature)在微服务之间传递。由于调用微服务使用已知密钥对 JWS 进行签名,因此它会携带终端用户身份(如 JWT 中所声明)和调用微服务的身份(通过签名)。也就是说,调用微服务本身就是 JWS 的发行者。接收微服务若要接受 JWS,首先需要根据嵌入在 JWS 中的公钥或通过其他机制获取的公钥来验证 JWS 的签名,然后还需检查是否可以信任该密钥。
微服务之间建立信
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



