MST

星途 面试题库

面试题:微服务架构下RPC安全机制中的认证方式有哪些及原理

在微服务架构采用RPC通信的场景下,请阐述常见的认证方式,比如基于令牌(Token)认证、基于证书认证等,并说明它们的工作原理。
42.7万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

基于令牌(Token)认证

  1. 工作原理
    • 用户登录:用户在客户端输入用户名和密码进行登录请求。
    • 认证服务器验证:请求发送到认证服务器,认证服务器验证用户名和密码。如果验证成功,认证服务器会生成一个令牌(Token),这个令牌通常包含用户身份信息、权限信息等,并且使用密钥进行签名。
    • 返回令牌:认证服务器将生成的令牌返回给客户端。
    • 客户端携带令牌请求:客户端在后续的RPC调用中,将令牌放在请求头或其他约定位置,一起发送给微服务。
    • 微服务验证令牌:微服务接收到请求后,提取令牌,并将其发送到认证服务器(或使用本地验证机制,前提是共享相同的密钥)进行验证。验证令牌的签名是否正确、是否过期等。如果验证通过,微服务处理请求;否则,返回认证失败错误。

基于证书认证

  1. 工作原理
    • 证书颁发:由认证机构(CA)为客户端和微服务颁发数字证书。证书包含公钥、证书持有者信息等,并由CA使用私钥进行签名。
    • 客户端请求:客户端发起RPC调用时,将自己的数字证书随请求一起发送给微服务。
    • 微服务验证:微服务接收到请求和客户端证书后,首先使用CA的公钥验证证书的签名,以确认证书的真实性。然后检查证书的有效期、证书持有者信息等是否符合预期。如果验证通过,微服务可以从证书中提取客户端的公钥,用于后续的加密通信(例如,使用客户端公钥对响应数据进行加密)。同时,客户端也可以要求微服务提供证书进行反向验证,过程类似,以确保通信双方的身份真实性。

基于OAuth认证

  1. 工作原理
    • 用户授权:用户向资源所有者(如用户账户服务)发起授权请求,资源所有者引导用户到授权服务器。用户在授权服务器上进行登录,并授权第三方应用(客户端)访问其资源。
    • 授权码发放:授权服务器验证用户身份和授权请求后,向客户端发放授权码。
    • 令牌获取:客户端使用授权码向授权服务器请求访问令牌(Access Token),可能还会获取刷新令牌(Refresh Token)。授权服务器验证授权码后,发放访问令牌等。
    • RPC调用:客户端在RPC调用时,将访问令牌放在请求中发送给微服务。微服务验证访问令牌的有效性,方式与基于令牌认证类似,通过与授权服务器交互或本地验证机制。如果验证成功,处理请求;否则拒绝。当访问令牌过期时,客户端可以使用刷新令牌获取新的访问令牌。