目录
Higress简单介绍:基于Istio与Envoy的多功能云原生API网关
API网关安全性认证的重要作用
为了保护您对外提供服务的 API,避免恶意访问、未授权访问、应用漏洞、黑客攻击等导致的数据损失和资产损失,API网关的认证是十分必要的。基于token的身份验证机制,如JWT(Json Web Token),在这一过程中扮演了关键角色。
API网关常见认证方式解析:
API密钥认证:适合轻量级安全需求场景,易于实现和管理,但安全性较低,易被窃取。适用于内部系统或低敏感数据接口。
OAuth 2.0 : 适用于需要第三方授权访问的场景,提供细粒度权限控制,增强用户隐私保护,但流程较复杂,可能增加开发成本。
JWT(JSON Web Token):适合跨域、分布式环境下的单点登录,携带信息丰富,减轻服务器负担,但需注意令牌过期与刷新机制设计,比较常用的认证方式之一。
OpenID Connect : 基于OAuth 2.0之上添加了身份验证层,特别适合Web应用的身份验证,简化登录流程,提高用户体验,但依赖于可靠的身份提供商。
HMAC认证 : 通过共享密钥生成消息验证码来验证请求合法性,适用于确保数据完整性与来源真实性,但要求双方严格保密共享密钥。
那安全认证是怎么做的 ?
以下是基于 JWT 的网关认证流程的详细步骤:
- 客户端发起认证请求:
-
- 客户端(如浏览器或移动应用)向 API 网关发送一个认证请求,通常包含用户的用户名和密码。请求可能通过 POST 方法发送到特定的认证端点。
- 网关转发请求到后端服务:
-
- 网关接收到认证请求后,直接将请求转发给后端的身份验证服务。这个过程是透明的,客户端并不知道请求被转发了。
- 后端服务进行验证并生成 token:
-
- 后端服务读取请求中的用户名和密码,进行身份验证。如果验证成功,后端服务会使用私钥生成一个 JWT token。
-
- 生成的 JWT 包含以下部分:
-
-
- Header:定义了令牌的类型(JWT)和签名算法(例如 HS256)。
-
-
-
- Payload:包含了用户信息(如用户名、角色等)和其他声明(如过期时间
exp
和颁发时间iat
)。
- Payload:包含了用户信息(如用户名、角色等)和其他声明(如过期时间
-
-
-
- Signature:对 Header 和 Payload 进行签名,确保数据未被篡改。
-
- 网关返回 token 给客户端:
-
- 后端服务将生成的 JWT token 返回给网关。
-
- 网关将该 token 作为响应