微服务系统中的认证管理
引言
微服务架构下,安全问题尤为重要,本文探讨微服务系统中认证管理的关键技术,包括用户认证、网关及API调用认证、系统间与系统内认证。
目录
- 简介
- 用户认证
- 网关及API调用认证
- 系统间与系统内认证
一、简介
认证是指验证当前声明为某一身份的实体是否真实。实体可以是人、系统或应用。
最基础的认证方式包括用户名密码登录、手机验证码、生物识别(如指纹、虹膜、面部)以及数字证书。

在微服务架构中,需要进行认证管理的主要场景包括:
- 用户访问系统
- 系统调用网关
- 网关调用系统
- 系统内应用之间调用
- 系统间调用
可将这些认证分为以下三类:用户认证、系统间与系统内认证、网关及API调用认证。
二、用户认证
微服务架构中存在多个系统,无缝切换需依赖单点登录(SSO),但微服务中的SSO与传统方式有差异。

传统的基于Session的SSO将授权信息存储在应用session中,而微服务采用无状态设计,通常通过Token传递用户授权信息。

OAuth2.0与SSO结合
OAuth2.0为授权框架,可通过扩展实现SSO,如OIDC。

基于OAuth2.0的SSO流程如下:
- 用户访问app1.com。
- 跳转到认证中心iam.com。
- 输入账号密码后认证成功。
- 写入浏览器Cookie。
- 重定向到app1.com并获取Token。
- 校验Token有效性。
- 存储Token到app1.com Cookie中。
- 用户访问其他应用时重复类似流程。
Token机制
IAM通常使用JWT封装用户信息与授权数据。

App需对Token加密后存入浏览器Cookie。
单点退出
微服务架构中无法直接通知各应用强制退出,可通过OAuth2.0的refreshToken机制实现。

当应用退出时通知IAM清除相关Token与Session,其他应用刷新Token时提示重新登录。
用户登录控制
基于OAuth2.0的SSO可在线控制用户对特定系统的访问权限。

在线用户管理
IAM可跟踪用户登录超时、记录Token信息并管理在线用户。

三、网关及API调用认证
网关管理员访问网关系统采用用户认证方式。
API调用认证
API调用认证可通过随机生成的Token绑定一组API权限,分配配额与限制。

网关调用系统
网关调用系统按照系统间调用处理。
四、系统间与系统内认证
系统间与系统内认证均涉及应用间调用,前者跨系统,后者在同一系统内。

应用间调用认证可通过编码(JWT)、加密(JWE)后再通过HTTP Header传输给下游系统完成。

