【简介】
本文主要分享了如何利用 Envoy 实现容器级别的 JWT 认证服务,在实现过程中,我们分别了解了 JWT 和 JWKS 这两个概念。其中,JWT 即JSON Web Token,是目前最为流行的跨域认证方案,一个 JWT 通常由 header、payload 和 signature 三个部分组成,JWT 的 JSON 主要体现在header和payload这两个 JSON 对象上,通过 Base64Url 算法实现串化,而 signature 部分则是由header和payload按照签名函数进行生成,主要目的是防止数据篡改。JWKS 可以利用密钥或者公/私钥对令牌进行验证,利用这一原理,Envoy 中集成了 JWKS ,它表示一组可以校验任意 JWT 的公钥,同样是一个 JSON 对象。为了获得可用的 JWKS,我们可以通过 Identity Server 4 或者 Keycloak 中提供的地址来获得这一信息,方便起见,本文选择了更为便捷的 Keycloak。最终,我们实现了一个通用的、容器级别的认证网关,调用方在消费这些 API 资源时都必须带上从认证中心获得的令牌,进而达到保护 API 资源的目的,更好地保障系统和软件安全。