分布式架构下权限认证方案的优化

known 发布于 2025-08-25 阅读(402)

摘" 要:随着科技的快速发展,有越来越多的计算机应用开始采用分布式架构模式。然而,这种架构模式却为应用程序权限体系的性能和安全带来了新的挑战。为此,文章提出一种全面的优化策略,采用多级缓存与分布式缓存相结合的方式来存储会话数据,使用户能够在认证过程中快速、高效地获取数据,并利用网关统一鉴权和AOP(面向切面编程)注解鉴权技术实现对不同微服务的访问控制。实验结果表明,在相同的用户请求数量下,改进后的权限认证方案可显著缩短系统的响应时间。这种优化策略通过减缓对底层数据库的频繁访问,减轻了系统负担,提升了系统的整体性能。

关键词:分布式架构;多级缓存;分布式缓存;权限认证

中图分类号:TP311" " 文献标识码:A" " 文章编号:2096-4706(2024)11-0167-05

Optimization of Permission Authentication Scheme under Distributed Architecture

LIU Jialin, YANG Yi, YAN Xiaofang, SUN Yue, ZHAO Yawei

(Hubei Normal University, Huangshi" 435002, China)

Abstract: With the rapid development of technology, more and more computer applications are adopting distributed architecture. However, this architecture brings new challenges to the performance and security of application permission systems. Therefore, this paper proposes a comprehensive improved strategy that combines multi-level caching and distributed caching to store session data, enabling users to quickly and efficiently obtain data during the authentication process. It also utilizes gateway unified authentication and AOP (Aspect Oriented Programming) annotation authentication technology to achieve access control for different microservice. The experimental results show that under the same number of user requests, the improved permission authentication scheme can significantly reduce the response time of the system. This improved strategy reduces the system burden and improves the overall performance of the system by slowing down frequent access to the underlying database.

Keywords: distributed architecture; multi-level cache; distributed cache; permission authentication

0" 引" 言

在当今日益复杂和多样化的计算机应用环境中[1],分布式架构已成为构建高性能、高可扩展性和灵活性系统的首选方法。随着企业的系统逐渐从单体应用迁移到分布式微服务体系,确保系统的安全性和用户权限管理变得尤为重要[2]。权限认证体系作为信息安全的关键组成部分[3],不仅需要满足用户需求,还要保障系统的稳定性和可维护性。

1" 权限认证体系

单体应用的权限认证体系通常基于角色或权限级别来确定用户或者角色是否具有访问应用程序的资源的权限,在登录时进行身份验证,验证成功则为用户创建一个会话,这个会话用于在用户与应用程序交互期间跟踪他们的状态。单体应用的这种权限认证通常是在应用程序内部实现的,这种会话管理方法也通常是基于服务器端的。而在分布式架构中,多个服务实例可能会处理来自同一用户的请求,而传统的会话管理方法通常假定会话状态存储在单一服务器上,这会导致不同实例之间的状态不一致或者冲突。此外,由于传统的会话管理依赖于单一的会话存储,它无法轻松扩展以处理大量的用户和请求。再者,在分布式架构中,用户请求可能需要穿越多个服务实例,传统的会话管理方法可能无法轻松在不同服务之间传递和共享会话信息[4]。

基于上述种种问题,单体应用的权限认证无法适用于分布式架构,需要一种更加复杂的会话管理机制来确保一致性和可扩展性[5]。当前分布式架构下的权限认证方法通常包括基于令牌的身份验证、角色和权限的访问控制以及一系列的安全协议和标准。这些方法在一定程度上确保了系统的安全性,但也存在一些潜在的不足之处,例如在密码安全性和性能方面还存在改进空间[6]。在基于令牌的身份验证方法中,用户登录后可能需要提供密码来获取令牌,因此密码的安全性直接影响到令牌的安全性[7]。如果密码存储不安全或验证不够强大,那么令牌本身也会受到威胁。当大量用户同时请求令牌或进行令牌验证时,服务器的性能可能受到限制。此外,基于角色和权限的访问控制方法也可能导致性能问题,因为在每个请求中需要检查用户的角色和权限。权限控制逻辑可能涉及多个角色、权限和资源的组合,使权限控制策略变得复杂,分散在不同服务或模块中的权限控制逻辑可能导致管理和维护的挑战。

这些不足之处并不局限于特定的权限认证方法,而是涵盖了多种方法。由此提出了一种全面的优化策略来提高系统的安全性、性能和可维护性。在认证层面,使用Bcrypt的hash算法来对密码进行加密保证密码的安全性,BCrypt使用加盐的方法对密码进行加密,由于每次的盐值不同且盐的位置也不同,大大降低了密码泄露的概率。使用缓存来保证系统的认证安全性,当大量的恶意请求频繁登录时,在缓存中记录该用户的登录次数,超过规定的最大次数则对账户进行锁定,以此来防止恶意的登录请求导致系统崩溃。为了进一步优化用户信息的存储效率同时解决单体应用下权限认证的会话可扩展性的问题,采用多级缓存结合分布式缓存策略来存储会话数据,以便多个服务实例可以共享并访问相同的数据,确保用户数据在认证过程中能够快速、高效地获取。在权限认证层面,引入了网关统一鉴权结合AOP(面向切面编程)注解鉴权技术,以实现对不同微服务的访问控制。这种方式不仅简化了权限管理的配置和维护,还增强了系统的整体可维护性。

2" 理论基础

分布式架构下的权限认证构建在安全性、可扩展性和灵活性的基础之上,旨在确保只有经过授权的用户或服务可以访问特定资源和执行相关操作。而当下常用基于Token的权限认证方案,这种方法使得用户状态无关紧要,因为每个请求都包含了所需的信息,可以解决单体应用下会话的状态共享问题。SaToken是一个权限认证框架,它为开发人员提供了高效、便捷的权限认证解决方案。

2.1" 基于令牌的权限认证

基于令牌(Token)的认证是在分布式架构下常用的一种认证方式。该认证方式在用户登录成功后生成一个令牌,其中包含了用户的标识信息和加密签名[8]。这个令牌作为用户身份的凭证,可以被存储在客户端,如浏览器的Cookie或本地存储。在用户与服务器交互时,令牌会被附加到请求中,服务器通过解析和验证令牌的方式来识别用户身份并授予相应的访问权限。与传统的会话认证相比,基于令牌的认证是无状态的,不需要在服务器端存储会话信息,从而提高了系统的性能和可扩展性;其次,令牌可以跨平台传递,适用于不同的应用场景;此外,基于令牌的认证天然适应于分布式架构,无须维持会话状态,增加了系统的灵活性和安全性。通过加密和签名技术,令牌的安全性得到保障,有效防止了篡改和伪造。基于令牌的认证可以确保整个认证过程的可靠性和安全性。本文设计的分布式架构下的权限认证方案主要采用基于令牌的身份验证方法。一旦用户成功进行身份验证,系统将为其生成一个令牌,该令牌包含用户的基本信息。随后,当用户尝试访问其他服务时,系统会检查用户是否携带有效的令牌,只有在验证通过的情况下,用户才能成功访问系统资源。

2.2" SaToken权限认证框架

SaToken(SpringBoot Shiro Token)是一个基于Spring Boot和Shiro的轻量级权限认证框架,旨在简化Java Web应用的权限管理和认证开发。框架提供简单易用的API,支持无侵入性集成,无状态认证和多种认证方式,包括用户名密码认证、Token认证和单点登录(SSO),同时具备灵活的权限控制和会话管理功能。通过加密和签名,保障令牌安全性,适用于多终端,如Web应用、移动应用和API访问。通过SaToken提供的API,采用粗细粒度结合的方法来更好地管理认证和权限控制。在粗粒度的验证层面,使用网关的全局过滤器来验证用户的身份状态。而在细粒度的验证层面,我们可以配置网关与子服务结合,以在用户访问子服务时进行状态验证。此外,SaToken提供的注解能够实现更细致的权限认证。在请求进入方法之前,系统会首先检查用户是否具备访问该资源的权限,通过粗细粒度结合的方法实现更加精细化的权限控制。

3" 方案设计

在本小节中,将从软件架构、优化策略、权限认证流程、多级缓存数据结构四个关键方面详细介绍整个优化流程。

3.1" 软件架构

权限认证主要包含登录验证和权限认证两部分。整个方案的软件架构如图1所示。

网关集群主要负责接收、路由、管理和保护来自外部客户端的请求以及将合法的请求转发到系统内部的各个服务,确保一致性的访问控制和认证。

认证中心(Auth)主要负责管理和维护用户身份认证和权限授权的过程,为系统中的多个组件和服务提供统一的认证与授权机制,从而保障整个系统的安全性和可控性。

Nacos集群主要负责实现服务发现和配置管理的功能。SkyWalking主要用于对请求节点进行分析与监控,以确保系统的健康。

3.2" 优化策略

在权限认证中,主要依靠用户在请求中携带的令牌(Token)来验证其身份和状态。在首次认证成功后,系统会颁发唯一令牌,其中包含用户的身份信息和认证状态。随后访问子服务时只需要验证这个令牌,即可确认用户的合法身份,避免了烦琐的身份验证过程。然而,随着认证请求的增加,认证中心的负载也会增加,从而影响整个分布式架构的性能。为了解决这个问题,采取引入多级缓存结合分布式缓存的优化策略。在这个方案中,认证中心会将令牌和相关信息保存在当前请求和缓存中,从而提高访问速度。为了减轻认证中心的负担,避免频繁进行完整的身份验证,令牌在短时间内会被缓存。在实际访问过程中,系统会首先检查当前请求是否携带Token,以确认用户身份,从而减少对认证中心的实时访问。当前请求中的令牌失效时,系统会查询分布式缓存,而不是直接访问认证中心,以避免负载过大。

分布式缓存在认证过程中也起着重要的作用,在实际应用中,可能会遭遇频繁的外部恶意登录请求,通过引入分布式缓存来计算用户登录次数的方法就可以有效应对。在验证用户信息的过程中,使用分布式缓存来追踪并计算登录尝试次数,系统可以迅速识别恶意请求并锁定请求,从而确保认证流程的安全性,保护系统免受恶意攻击,维护用户数据的安全。

此外,为了保证权限认证系统的整体安全性,使用SaToken提供的内部服务外网隔离来避免外部请求绕过网关访问资源。传统的权限认证采用每个服务各自鉴权的方式,管理十分麻烦。因此系统采用网关统一鉴权,将请求路由到接口,再结合AOP注解鉴权来实现高效的权限管理。

3.3" 权限认证流程

客户端通过账号、密码和验证码进行登录请求,服务端的网关首先截获请求,为了防止外部恶意请求绕过网关直接访问系统资源。网关的转发认证过滤器首先会进行统一鉴权,为请求添加令牌(sameToken)值,以便在后续的子服务中进行进一步的鉴权,验证请求是否是从网关路由过来的。随后,请求进入全局过滤器,用于验证用户的登录状态。若用户未登录且不在白名单内,将无法访问子服务。此时,请求会被路由至认证中心。具体的权限认证流程如图2所示。

认证中心首先对用户信息进行校验,通过使用Bycrypt的哈希算法来验证用户密码的准确性。这种方法有效地预防了彩虹表攻击和暴力破解法。若用户多次错误输入密码,达到最大尝试次数,其账号将会被锁定。在分布式缓存中,会存储有关用户账号信息、登录次数以及锁定时间的数据。只有当锁定时间过期后,用户方可再次尝试登录。

用户成功登录后,服务端会为其分配唯一的Token值,并根据其角色分配相应的权限列表。随后,系统会将该用户信息存储于多级缓存,分别在当前请求和分布式缓存中保留备份。在用户再次向服务发起请求时,首先会检查当前请求是否携带用户的Token值,如果未携带,则会从分布式缓存中获取并重新存储在当前请求中。经过Token值的验证后,系统可调用相应的接口方法。但是,在执行接口方法之前,系统会通过AOP注解再次进行权限验证,仅有具备权限的用户才能合法访问系统资源。通过将网关统一鉴权与AOP注解鉴权结合使用,系统实现了高效率的权限验证。这种做法避免了传统方式在各子服务中分别进行权限认证的烦琐步骤。

3.4" 多级缓存数据结构

传统的认证授权系统主要由应用服务器和数据库服务器组成,应用服务器负责接收客户端发送的请求并进行处理,数据库负责存储认证信息并处理来自应用服务器的请求[9]。这种方法会导致整个系统出现性能瓶颈,当用户请求量增大的时候,每次都需要查询数据库来验证权限,这样会增加响应时间降低吞吐量,同时也会有一些安全风险,如果应用服务器收到攻击或者数据泄露,攻击者可能会获得对数据库的访问权限,从而导致安全风险。而基于令牌的权限认证系统会将身份验证的授权逻辑与应用服务器分开,使得系统更加模块化且易于管理,应用服务器只需要验证令牌的有效性,身份验证由专门的模块来处理。由于令牌中包含了用户的身份和授权信息,应用服务器无须每次都查询数据库来验证权限。本文提出的多级缓存将用户的信息在分布式缓存以及当前作用域中各存一份,当需要查询用户信息时,首先在当前作用域中查找,若查询失败,则在分布式缓存中查询,在查询成功之后再次将用户信息存入当前作用域中,方便用户进行与身份验证相关的操作。

多级缓存的数据结构如图3所示。

在缓存中,Token的数据结构包括以下字段:Token键值、Login UserId(当前登录用户ID)、Token Value(值)、Timeout(过期时间)、Active Timeout(有效过期时间)。其中,Timeout和Active Timeout都是预先设置的时间,两者中任一时间到达,Token将失效。Timeout过期后的Token无法续签,而Active Timeout在有效期内,只要用户有操作,Token将自动续签,确保其持续有效。两者同时配置,任意一个过期都将要求用户重新登录,以确保用户信息的安全性。设置当前请求和分布式缓存之间的多级缓存结构,以优化获取登录用户信息的效率。若当前请求中没有登录用户信息,系统将从分布式缓存中获取,并在获取后将信息存储于当前请求,以便后续用户账户操作的便捷性。

4" 性能测试结果对比

使用本文提出的改进策略之后,对原有系统和改进后的系统分别测试不同并发用户数量的平均响应时间。测试环境如下(服务端配置):CPU:2.60 GHz,内存:16 GB,操作系统:Windows 11,Web容器:Tomcat7 [10]。

经过实验验证,实验结果如图4所示。

由于引入了多级缓存策略,在相同的用户请求数量下,改进后的系统具有更快的平均响应时间,使得系统能够更有效地管理和存储已验证用户的权限信息。这一优势随着用户请求数量的增加而更加显著,改进后的系统在处理并发用户数量增多的情况下表现更加出色,相较于原有系统,其响应时间的性能提升更为显著。

多级缓存策略为分布式架构下的权限认证体系带来了明显的优势,它通过当前作用域结合分布式缓存的方式有效地减轻了对数据库的频繁访问压力。系统在验证用户权限时无须每次都进行数据库查询,而可以快速从缓存中获取所需信息,从而实现更短的响应时间。随着用户请求数量的增加,原有系统面临数据库响应时间逐渐增加的问题,因为数据库负载不断上升。改进后的系统在这种情况下更具竞争力,因为它能够有效地维护缓存中的权限数据,减轻了数据库的负担,从而保持了更短的响应时间。

5" 结" 论

综合以上实验验证,本研究旨在优化分布式架构下的权限认证体系。通过多级缓存策略,成功提升了系统性能,减少了对数据库的访问压力。基于令牌的认证方式在分布式环境下表现出色,提高了系统的灵活性和性能,同时保持了安全性。但是也有一些挑战,例如令牌处理可能需要更多资源。在实际应用中,需要进一步考虑缓存一致性和更新机制的问题。总体而言,本文提出的优化策略为构建高效、安全的分布式权限认证体系提供了有益思路,未来可以进一步探索更多技术手段以不断优化系统性能和安全性。

参考文献:

[1] 辛园园,钮俊,谢志军,等.微服务体系结构实现框架综述 [J].计算机工程与应用,2018,54(19):10-17.

[2] 顾慧杰.基于微服务架构的用户认证与授权技术的研究与应用 [D].北京:北京印刷学院,2022.

[3] 郭晓宇,阮树骅.基于OAuth 2.1的统一认证授权框架研究 [J].信息安全研究,2022,8(9):879-887.

[4] 顾慧杰.基于微服务架构的用户认证与授权技术的研究与应用 [D].北京:北京印刷学院,2022.

[5] 童敏,张黎娜,梁伍七.基于JWT的分布式系统认证授权机制设计和实现 [J].合肥师范学院学报,2022,40(3):7-10.

[6] 项武铭,鲍亮,俞少华.基于JWT的RESTful API角色权限验证方案设计 [J].现代计算机,2018(34):82-85.

[7] 刘东,任海玲.基于差分隐私的大数据安全访问权限认证仿真 [J].计算机仿真,2021,38(8):421-424+486.

[8] 陈超,段茹茹,陈勇,等.标识解析应用中数据权限的控制方法 [J].工业控制计算机,2023,36(4):61-62+65.

[9] 陈佳.一种基于JWT令牌认证的电力系统微服务认证授权方案 [J].电工技术,2021(16):151-154.

[10] 叶天琦.基于缓存技术的认证授权系统性能优化 [J].信息技术与标准化,2021(8):59-62.

作者简介:刘家琳(1999—),女,汉族,湖北丹江口人,硕士在读,研究方向:软件工程;颜小芳(1999—),女,汉族,浙江温州人,硕士在读,研究方向:科学学科教学设计与实践;孙悦(1999—),女,汉族,河南洛阳人,硕士在读,研究方向:人工智能;赵亚伟(1997—),男,汉族,河南周口人,硕士在读,研究方向:数据分析;通讯作者:杨怿(1979—),男,汉族,湖北黄石人,高级实验师,硕士,研究方向:软件工程、数据分析。

收稿日期:2023-10-25

标签:  令牌 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor