4、身份认证与访问控制:OAuth 2.0、OpenID Connect、JWT、多因素认证、细粒度授权(RBAC/ABAC)在开放银行中的应用
开放银行的核心是“连接”与“共享”,但每一次API调用都意味着一次信任的传递。银行系统一旦对外暴露接口,就必须回答三个根本问题:调用者是谁(身份认证)、调用者能做什么(授权)、以及如何证明这次调用在传输中未被篡改(完整性)。本章围绕OAuth 2.0、OpenID Connect、JWT、多因素认证(MFA)以及RBAC/ABAC细粒度授权,构建一套适用于开放银行场景的身份认证与访问控制体系。这些技术不是孤立的工具,而是层层递进的信任链条:OAuth 2.0解决“授权”问题,OpenID Connect在授权之上解决“身份”问题,JWT作为令牌载体贯穿全程,MFA提升认证强度,RBAC/ABAC则决定授权粒度。
上图展示了开放银行场景下身份认证与访问控制的整体技术架构。用户(TPP或移动App)首先通过认证与授权层完成身份验证,该层集成了OAuth 2.0授权服务器、OpenID Connect Provider以及MFA多因素认证能力。认证通过后,令牌服务负责签发JWT格式的Access 和ID ,这些令牌随后被银行API网关校验,并结合RBAC/ABAC策略进行细粒度授权,最终决定用户能否访问账户、交易、客户资料等核心数据资源。整个过程中,策略管理模块动态下发授权规则,审计与监控模块记录所有令牌生命周期事件和访问日志,形成完整的信任闭环。
4.1 核心原理:从OAuth 2.0到OpenID Connect的信任传递
OAuth 2.0是开放银行授权的基石,它定义了一套委托授权机制,允许用户(资源所有者)授权第三方应用(客户端)在限定范围内访问其受保护资源。在开放银行场景中,典型的流程是:用户通过银行提供的授权页面确认授权,银行授权服务器向第三方应用颁发授权码,第三方应用用授权码换取Access ,随后携带Access 调用银行API。OAuth 2.0支持四种授权模式,其中授权码模式(Authorization Code)是开放银行最推荐的方式,因为它支持令牌与客户端分离,且可以结合PKCE(Proof Key for Code Exchange)防止授权码拦截攻击。
然而,OAuth 2.0本身只解决“授权”问题,并不解决“身份认证”问题。当第三方应用需要确认“当前用户是谁”时,就需要OpenID Connect(OIDC)在OAuth 2.0之上增加身份层。OIDC通过签发ID (一个JWT)来传递用户身份信息,ID 中包含sub(用户唯一标识)、iss(签发者)、aud(受众)、exp(过期时间)等标准声明。在开放银行中,OIDC通常用于用户登录场景,例如用户通过第三方理财App发起账户聚合请求时,App需要先引导用户完成银行侧的身份认证,获取ID 确认用户身份,再通过OAuth 2.0获取Access 访问账户数据。
4.2 JWT:令牌的载体与安全边界
JWT(JSON Web )是OAuth 2.0和OIDC中最常用的令牌格式,它由三部分组成:Header(头部)、Payload(载荷)、Signature(签名)。Header声明令牌类型和签名算法,Payload携带声明(Claims),Signature用于验证令牌完整性。在开放银行中,JWT的典型应用场景包括:Access (授权访问API)、ID (传递用户身份)、以及客户端断言(Client Assertion)用于客户端认证。
JWT的安全边界取决于签名算法和密钥管理。开放银行场景中,推荐使用RS256(RSA签名)或ES256(ECDSA签名)等非对称算法,银行持有私钥签发令牌,API网关持有公钥验证令牌。对称算法HS256虽然性能更好,但要求签发方和验证方共享密钥,在分布式开放银行架构中密钥分发和管理成本较高,且一旦泄露影响面更大。此外,JWT的Payload是Base64编码而非加密的,因此绝不能将敏感信息(如身份证号、银行卡号)直接放入JWT中,必须通过引用(如令牌内包含资源服务器可查询的会话ID)或加密JWE(JSON Web Encryption)来保护敏感数据。
| JWT特性 | 开放银行中的要求 | 风险与对策 |
|---|---|---|
| 签名算法 | RS256/ES256非对称算法 | 禁用none算法,防止伪造令牌 |
| 过期时间(exp) | Access 15分钟-2小时 | 过期后需刷新令牌,减少令牌泄露窗口 |
| 受众(aud) | 必须指定API网关或资源服务器标识 | 防止令牌被重放到其他服务 |
| 敏感数据 | 不存放明文敏感信息 | 使用JWE加密或引用会话ID |
| 密钥轮换 | 定期轮换签名密钥 | 通过JWKS(JSON Web Key Set)动态发布公钥 |
4.3 多因素认证(MFA):提升认证强度的关键防线
开放银行涉及高价值金融交易,仅靠用户名密码的单因素认证已无法满足安全要求。多因素认证(MFA)要求用户提供至少两种不同类型的认证因素:知识因素(密码、PIN)、持有因素(手机、硬件令牌)、生物特征因素(指纹、人脸)。在开放银行中,MFA的应用场景包括:用户登录、大额转账、修改敏感信息、新增收款人等高风险操作。
MFA的实施需要平衡安全性与用户体验。银行通常采用自适应MFA策略:根据交易金额、设备指纹、地理位置、行为模式等风险信号动态决定是否触发MFA。例如,用户在同一设备、同一地点进行小额查询时,可能只需密码认证;但当用户发起大额转账或更换设备登录时,则强制要求短信验证码+生物特征的双重认证。这种风险自适应的MFA策略既能保障安全,又能减少对用户的打扰。
4.4 细粒度授权:RBAC与ABAC的组合策略
开放银行中,不同角色对API的访问权限差异巨大。RBAC(基于角色的访问控制)通过角色将用户与权限关联,例如“账户查询员”角色只能调用账户余额查询API,“交易发起员”角色可以调用转账API。RBAC的优点是模型简单、易于管理,适合权限相对稳定的场景。但RBAC的粒度较粗,无法表达“用户A在上午9点到下午5点之间可以查询账户余额,但转账金额不能超过5000元”这类复杂策略。
ABAC(基于属性的访问控制)则通过属性策略实现更细粒度的授权。ABAC的决策基于四类属性:用户属性(部门、职级、风险等级)、资源属性(账户类型、余额范围)、环境属性(时间、IP地址、设备状态)、操作属性(查询、转账、修改)。在开放银行中,ABAC策略可以表达为:允许 用户.风险等级 == '低风险' AND 资源.账户类型 == '储蓄账户' AND 环境.时间 BETWEEN 08:00 AND 20:00 AND 操作.转账金额 <= 10000。这种策略的灵活性极高,但策略管理复杂度也相应增加。
实际开放银行项目中,通常采用RBAC+ABAC的混合模式:RBAC负责粗粒度的角色权限分配,ABAC负责在RBAC基础上叠加细粒度的条件约束。例如,一个“客户经理”角色(RBAC)可以访问客户资料,但ABAC策略进一步限制:只能访问自己管辖区域内的客户,且查询操作必须在工作时间内进行。这种混合模式既保持了RBAC的易管理性,又获得了ABAC的灵活性。
4.5 实战案例:某开放银行平台的身份认证与授权改造
某股份制银行在建设开放银行平台时,面临以下挑战:原有系统采用简单的认证,无法满足监管对身份认证和授权的合规要求;第三方合作机构(TPP)接入后,无法控制其访问的数据范围;用户敏感操作(如大额转账)缺乏二次认证机制。该银行决定按照本章所述技术体系进行改造。
改造目标与约束:平台需支持200+家TPP接入,日均API调用量约5000万次,要求令牌签发延迟低于50ms,API网关校验延迟低于10ms。同时,需满足《个人信息保护法》和央行关于开放银行的安全技术规范。
实施步骤:
- 部署OAuth 2.0 + OIDC授权服务器:基于开源方案(如Keycloak)定制开发,支持授权码模式+PKCE,并扩展了TPP注册审核流程。授权服务器负责用户认证、TPP客户端认证、令牌签发和刷新。
- JWT令牌体系:Access 采用RS256签名,有效期30分钟;Refresh 有效期7天,存储在银行侧,通过令牌轮换机制防止重放。ID 用于传递用户身份,包含sub、iss、aud、auth_time等声明。
- MFA集成:在授权服务器中集成FIDO2认证,用户登录时优先使用生物识别(指纹/人脸),对于大额转账(单笔超过5万元)强制要求交易签名,使用硬件安全密钥对交易要素进行签名。
- RBAC/ABAC策略引擎:API网关内置策略决策点(PDP),从JWT中提取用户角色和属性,结合请求上下文(时间、IP、设备指纹)执行ABAC策略。策略通过管理控制台动态下发,支持灰度发布和策略回滚。
- 审计与监控:所有令牌签发、刷新、吊销事件以及API访问日志实时接入SIEM平台,设置异常行为告警规则,如“同一令牌在5分钟内从3个不同IP访问”触发告警。
改造结果:系统上线后,TPP接入审核时间从平均5个工作日缩短至1个工作日;API调用成功率保持在99.99%;因身份认证和授权问题导致的安全事件下降为零。在性能方面,授权服务器令牌签发平均延迟35ms,API网关校验平均延迟6ms,满足业务要求。
风险与代价:改造过程中最大的挑战是存量TPP的迁移。部分TPP仍使用旧的认证方式,需要提供过渡期的双轨运行机制。此外,ABAC策略的编写和调试需要业务部门深度参与,初期策略配置错误导致部分TPP的API调用被误拦截,通过建立策略仿真测试环境解决了该问题。
4.6 总结与复盘
开放银行的身份认证与访问控制不是单一技术的堆砌,而是一套环环相扣的信任体系。OAuth 2.0定义了授权的框架,OpenID Connect补充了身份认证的语义,JWT作为标准化的令牌格式贯穿其中,MFA提升了认证的强度,RBAC/ABAC则实现了从“能访问”到“在什么条件下能访问”的精细化控制。在实际落地中,银行需要根据自身业务风险偏好、监管要求和用户体验目标,合理配置各层级的策略参数。
从工程实践角度看,建议开放银行平台在建设初期就建立统一的身份认证与授权中台,将认证、授权、令牌管理、策略引擎、审计日志等能力沉淀为平台级服务,避免各业务线重复建设。同时,应建立完善的令牌生命周期管理机制,包括签发、刷新、吊销、过期、轮换等环节,并配套监控告警体系。最后,定期进行安全评估和渗透测试,重点关注OAuth 2.0授权码拦截、JWT签名绕过、MFA绕过、ABAC策略绕过等高风险攻击路径。