
1) 【一句话结论】
在微服务架构下,保险业务系统通过API网关统一管理请求路由与安全策略,结合传输层安全(TLS)加密通信,采用OAuth2实现客户端(用户/服务)认证授权,用JWT作为服务间安全令牌,确保服务间通信的身份认证、权限控制及数据机密性,实现安全、解耦的通信。
2) 【原理/概念讲解】
老师口吻:微服务通信的核心是“解耦+安全”,认证授权解决“谁有权调用”的问题,API网关作为“安检门”统一处理,同时传输层安全(TLS)保障数据加密。
3) 【对比与适用场景】
| 对比维度 | 认证授权(OAuth2) | 服务间令牌(JWT) |
|---|---|---|
| 定义 | 授权框架,用于客户端(用户/服务)获取访问令牌 | 自包含的JSON对象,包含身份、权限 |
| 核心作用 | 证明“谁”有权访问资源(如用户登录后授权服务调用外部系统) | 证明“谁”能调用“什么”服务(微服务间传递) |
| 使用场景 | 用户登录后,服务调用外部系统(如支付、核保) | 微服务间调用,如核保服务调用费率服务 |
| 注意点 | 需授权服务器,令牌有有效期(通常1小时),需刷新(Refresh Token) | 签名算法(如HS256、RS256),需防止泄露,过期后失效(exp字段) |
4) 【示例】
假设保险业务有“用户服务”“核保服务”“支付服务”,通过API网关和OAuth2、JWT实现安全通信:
/auth/login),携带用户名/密码,网关调用授权服务器(如OAuth2),认证成功后返回访问令牌(Access Token)和刷新令牌(Refresh Token)。Authorization: Bearer <access_token>。费率服务验证JWT的签名(如HS256,密钥由网关通过KMS管理),检查过期时间(exp=...)和声明(claims,如用户ID、权限),验证通过后返回费率数据。示例请求(费率服务调用):
GET /rate-service/rate?policyId=12345
Header:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ... (JWT内容,包含用户ID、权限、exp等)
5) 【面试口播版答案】
在微服务架构下,保险业务系统实现服务间安全通信的核心是“API网关+传输层安全(TLS)+认证授权(OAuth2)+服务间令牌(JWT)”的方案。首先,API网关作为所有请求的统一入口,负责路由、鉴权和流量控制,比如用户请求核保服务时,网关先检查请求头中的认证信息,验证通过后再转发。然后,传输层安全(TLS)通过HTTPS加密通信链路,防止数据被窃听或篡改。接着,认证授权部分,我们采用OAuth2协议,用户登录后,网关调用授权服务器获取访问令牌(Access Token),这个令牌包含用户的身份和权限信息。服务间通信时,我们使用JWT作为安全令牌,每个服务调用时,请求头携带Authorization: Bearer <token>,服务验证JWT的签名(比如HS256算法,密钥由网关通过KMS管理)和过期时间(exp字段),确保请求的合法性。比如,核保服务调用费率服务时,费率服务通过JWT中的用户ID和权限判断是否允许访问费率数据。同时,API网关采用基于实例的负载均衡策略,将请求分发到不同服务实例,提高系统可用性。这样,通过API网关统一管理请求,结合TLS、OAuth2和JWT,实现了微服务间安全、解耦的通信,保障了保险业务系统的数据安全和权限控制。
6) 【追问清单】
roles: ["read"]或roles: ["read", "write"]),服务验证时检查该字段,限制操作,比如只读服务只能查询数据,写服务可以修改数据。7) 【常见坑/雷区】