云原生架构中,对于服务和接口的访问通常有安全性的要求,其中一个重要的方面就是用户身份认证;云原生网关作为云原生架构的访问入口,自然是实现统一认证鉴权的理想位置。云原生网关的认证鉴权主要解决是被调用者身份和校验调用者是否有权限调用当前api等问题。当前云原生网关支持jwt和odic类型的认证鉴权。
jwt是一套基于用户体系对api进行访问授权的机制,主要是基于token识别调用者身份,进一步判断用户是否有权限调用当前api;jwt交互流程如下:
Jwt鉴权配置如下:
JWT鉴权配置参数说明:
配置 | 说明 |
鉴权名称 | 唯一标识一个jwt鉴权配置,只能包含大小写字母、数字和‘-’,且不能以‘-’开头或者结尾 |
加密算法 | 支持HS256、HS512、RS256 |
密钥 | 选择HS256/ HS512算法时填写,需要指定是否base64编码,并提供密钥 |
RSA密钥 | 选择RS256算法时填写,需要提供RSA算法公钥和私钥 |
JWT Token配置 | 网关从请求获取JWT Token的位置,支持指定header、query和Cookie的key |
过期时间 | JWT Token过期时间,默认86400秒 |
云原生网关同时支持oidc(openID Connect)鉴权方式,OIDC是对oAuth2.0的扩展,通过增加ID token字段,提供了用户基础信息;ID token采用jwt格式封装。OIDC整理流程如下:
OIDC鉴权配置如下图所示:
ODIC鉴权配置参数如下:
配置 | 说明 |
鉴权名称 | 唯一标识一个OIDC鉴权策略 |
Client ID | OAuth 客户端 ID |
Client Secret | OAuth 客户端 secret |
Discovery | 身份认证服务的服务发现地址 |
Realm | 与租户概念类似,不同 Realm 之间是相互隔离的,只能管理和验证它们所具有的用户 |
Redirect Uri | 身份提供者重定向的 URI |
Scope | 用于认证的范围,默认值为openid |
Bearer Only | 当设置为 true 时,将仅检查请求头中的令牌(Token)。 |
Ssl Verify | 当设置为 true 时,验证身份提供者的 SSL 证书 |
Access Token In Authorization Header | 当设置为 true 时,将访问令牌设置在请求头参数 Authorization,否则将使用请求头参数 X-Access-Token |
Set Access Token Header | 在请求头设置访问令牌 |
Set ID Token Header | 是否将 ID 令牌设置到请求头参数 X-ID-Token |
Set UserInfo Header | 是否将用户信息对象设置到请求头参数 X-Userinfo |
logoutPath | 登出路径 |
Timeout | 请求超时时间,单位为秒 |
introspectionEndpoint | 身份服务器的令牌认证端点 |
introspectionEndpointAuthMethod | 令牌内省的认证方法名称,默认为client_secret_basic |
publicKey | 验证令牌的公钥 |
tokenSigningAlgValuesExpected | 用于对令牌进行签名的算法 |