基于sdk、证书、网关的可信接入方案

前言

随着信息技术的广泛应用,各种应用系统面临着日益严峻的安全挑战。为了保护系统的安全,可信接入方案成为了必不可少的一部分。该方案通过 SDK、证书和网关调用的协同作用,实现了对用户身份的验证、数据的加密传输以及访问控制等功能。

SDK的作用

SDK(软件开发工具包)在可信接入方案中起着关键作用。它提供了一系列的接口和功能,使得应用系统能够与网关进行安全的通信。SDK 通常包括加密算法、证书管理、身份验证等功能模块,能够确保数据在传输过程中的机密性、完整性和可用性。

证书的重要性

证书是可信接入方案中的重要组成部分。它用于验证用户的身份和服务器的合法性。通过使用数字证书,系统可以确保通信双方的身份真实可靠,防止身份假冒和数据篡改。此外,证书还可以用于加密数据,保护数据的机密性。

网关调用流程

网关在可信接入方案中起到了连接应用系统和外部网络的桥梁作用。网关调用流程通常包括以下步骤:

  • 应用系统通过 SDK 向网关发送请求。
  • SDK 使用证书对请求进行签名和加密。
  • 网关接收到请求后,对证书进行验证,确保请求的合法性。
  • 网关对请求进行解密和验证,然后将请求转发到相应的服务器。
  • 服务器处理请求后,将响应返回给网关。
  • 网关对响应进行加密和签名,然后返回给应用系统。
  • 应用系统通过 SDK 对响应进行解密和验证,获取响应数据。
    在这里插入图片描述

具体方案

1、可信列表注册

可信列表是指子系统提供自身信息给服务提供方,通过服务提供方的后台管理系统,注册一条可信列表信息,具体包括注册列表编码、注册列表名称、注册列表类型(小程序、APP、WEB)、注册列表访问IP、注册列表访问端口、归属单元等,通过上述信息将接入方采集入库,然后将可信列表信息移交管理员审核。

2、可信证书分配

可信列表注册审批完成后,通过管理系统一键生成唯一对应的证书,证书包含下述信息
在这里插入图片描述
制作完成后,将证书导出为证书文件,提供接入方安装使用。

3、SDK接入

  • 初始化:init(cerPath,agentUrl,httpMethod) ,cerPath:证书文件路径、agentUrl:网关地址、httpMethod:请求调用方式,get/post
  • 证书加载:根据初始化传入的证书地址,加载证书文件的信息
  • 获取默认参数:accessId(接入者标识,对应证书文件)、data_stamp(获取当前时间戳)、nonce(uuid作为随机数,用于控制请求幂等)、version(接口安全版本,针对不同接口,有不同的安全限制,不涉及人员信息的为一类接口,web通讯使用https、涉及人员信息散列值的为二类接口,遵循一类接口安全限制,同时请求响应要加签验签、涉及明文人员信息的为三类接口,遵循二类接口安全限制,同时响应信息加密)
  • 构造请求参数:在默认参数的基础上,更新对应接口的安全版本信息、针对二、三类接口进行参数加签和参数加密,分别用accessKey加签和accessSecretKey加密
  • 发起网络请求:根据初始化的请求方式携带参数发起请求

网关层校验:

网关层全局过滤器负责处理通过sdk发起的请求,进行全局流水号构造、调用能力限流、业务限流、访问者校验、证书校验、请求幂等校验、请求过期校验、黑名单校验、参数验签解密等处理,最后转发请求

  • 构建全局流水号:用于记录整个调用链的业务流程,通过(accessId+nonce+时间戳)构造
  • 访问者校验:获取缓存中配置的安全访问者列表,判断当前访问者标识accessId是否有效,失败则提示管理员开通白名单
  • 调用能力限流:主要用于限制付费接口的调用次数,例如核验等,根据请求uri和访问者标识accessId,判断配置的调用能力次数是否超限,redis操作
  • 证书合法性校验:根据accessId获取缓存中的证书信息,根据过期时间比较当前证书是否有效
  • 业务限流判断:如果开启业务限流开关,需要使用令牌桶来进行业务限流,每个accessId对应一个令牌桶,通过缓存lpop和lpush实现取令牌和生成令牌,其中,每次请求来到过滤器,通过getToken获取令牌,若为获取到,则限流,同时,网关中一个定时器固定的生成令牌,若令牌桶满,则丢弃生成的令牌
  • 请求有效期校验:根据请求中携带的dataStamp和当前时间戳判断,时间差超出设置的值,返回请求超时
  • 幂等校验:根据nonce随机串实现,由于nonce通过uuid实现,因此非极端情况不会重复,验证时判断当前nonce是否缓存存在,若存在则为重放请求,如不存在,将nonce放入缓存,设置超时时间为请求有效时间
  • api黑名单校验:防止未授权的api被非法调用,通过uri和accessId实现,制作证书后,会默认添加未授权黑名单,若开通访问需提交审查
  • 参数验签解密:根据接口安全版本,进行对应的参数解析,一类接口直接解析参数、二类接口需要对接收到的参数进行验签,通过sm3(排序后的参数传+accessKey)与sign比较、三类接口在验签之前进行参数解密操作,通过accessSecret对参数解密,然后执行验签
  • 服务调用:上述流程执行完成,通过chain.doFilter进行后续调用

存在问题

上述流程中,并没有对接入方和证书的匹配性进行校验,因此也就存在证书文件泄露,其他系系统也可以通过这个证书接入,我们在接入列表注册时曾记录了IP和端口信息,因此,可以在网关层增加对IP、端口的合法性校验,通过SDK接入的系统的出网IP我们可以限制,在系统建立初期,考虑到接入方来源为政府系统,并且接入证书通过审批下发,因此没有限制接入匹配。

总结

基于 SDK、证书和网关调用的可信接入方案为应用系统提供了一种可靠的安全保障机制。通过合理地运用这些技术,可以有效地提高系统的安全性和可靠性,保护用户的隐私和数据安全。在实际应用中,需要根据具体的需求和场景,选择合适的 SDK、证书和网关,并严格遵循相关的安全标准和规范,以确保可信接入方案的有效性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雅俗共赏zyyyyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值