基于Spring security机制的通用权限管理组件技术设计与实现

 2023-02-16 08:52:59

论文总字数:16260字

摘 要

企业广泛采用应用程序编程接口正在改变相关的业务方式,它能实施多种应用程序, 用户只需要重写程序接口。虽然这种方式支持对可用数据进行更灵活的开发,但在接口顶部开发的服务和应用程序很容易受到各种攻击,从SQL注入到一些敏感数据的非法的访问不等。必须重新使用或调整可服用的安全解决方案用以程序接口。

本文重点研究了一种用于API的柔性访问控制机制的开发。这是一种重要的安全机制,可保证在调用其接口函数时强制执行对资源的授权约束。而在已经开发Spring Security框架中扩展, 这个热门的Spring 框架中构建了很多用于保护产品服务和应用程序的标准, 用于规范和执行基于角色的访问控制 (RBAC) 策略。

以前在Spring框架中使用Spring Security方法大抵有3种,两种较为简略的方式是通过硬解码,直接于XML文件中配置,相应的难度较低,但是容易出现后续开发问题。而另一种为单独拆开拦截链,重写相关配置,而达到拦截不明信息通过服务器的方式。而这3种方法的结合,开发人员可以能够直接改写spring源代码,而达到拦截非法信息的目的。但是由于Spring Security框架过于复杂,相应学习并配置的技术要求有一定高度。在探索开发的过程中,Spring Boot这种可以迅速构建微服务系统的框架,可以做到不用自己做配置,快速搭建项目,而其本身也支持Spring Security,同时拥有非常简洁的安全策略集成。文中所开发项目为一种通用的权限管理组件,通过对目标关系分层,在水平结构中添加组织与用户的关联。达到用户指向角色,角色与组织交集,权限与这三者对应,用权限等级变相地提高安全性,而不同的水平结构使产品更贴近现实。开发的项目能快速迭代,适用各种需要权限认证的现实场景,同时又具备使用Spring框架开发带来的各种优点。

关键词:Java;AOP;Spring Security;权限管理

Design and implementation of universal rights management component based on spring security mechanism

Abstract:

A wide range of applications programming interfaces are changing the business approach, and it can implement a variety of applications, requiring users to rewrite the program interface. While this approach supports more flexible development of available data, services and applications developed at the top of the interface are vulnerable to a variety of attacks, ranging from SQL injection to illegal access to sensitive data.

You must reuse or adjust the security solutions you can take to program interfaces. This paper focuses on the development of a flexible access control mechanism for APIs. This is an important security mechanism to ensure that authorization constraints on resources are enforced when their interface functions are invoked.

and expanded in the spring security framework that has been developed, this popular spring framework builds a number of standards for protecting product services and applications to standardize and execute role-based access control (RBAC) policies. There are probably 3 kinds of spring security methods used in the spring framework, and two simpler ways to configure them directly in XML files, which are less difficult, but are prone to subsequent development problems. And the other is to separate the interception chain, rewrite the relevant configuration, and to intercept the unknown information through the server way. The combination of these 3 approaches enables developers to directly rewrite the spring source code to intercept illegal information. However, because of the complexity of the spring security framework, the technical requirements for learning and configuring are of a certain degree. In the process of discovery and development, Spring boot, a framework that can quickly build a micro-service system, can do without its own configuration, quickly build projects, and itself supports Spring security. It also has a very concise security policy integration. The project developed in this paper is a common rights management component, and the relationship between the organization and the user is added to the horizontal structure by layering the target relationships. To reach the user point role, the role and organization intersection, the right and these three corresponding, with the level of authority to improve security in disguise, and different levels of the structure to make the product closer to reality. Projects that are developed can be quickly iterated, applying a variety of real-world scenarios that require authorization, as well as the benefits of using spring Framework development.

Key words: Java;AOP;Spring Security;Authority

目录

摘要 Ⅰ

Abstract Ⅱ

第一章 引 言 1

1.1 课题背景 1

1.2 项目概述 1

1.3 基于角色的访问模型 1

1.4 目前研究现状 1

第二章 相关技术及开发环境 2

2.1 Java 2

2.2 Spring Security 2

2.3 Spring Boot 2

2.4 开发环境 2

第三章 实现Spring Security 3

3.1配置Spring Boot Security环境 3

3.2. 实现登录功能 4

3.2 指定的角色,指定的权限 5

3.3 引入数据库管理 6

3.4 密码自定义验证 6

3.5. 权限配置 6

第四章 数据库结构设计 7

4.1 设计思路 7

4.2用户表与组织表设计 7

4.3 权限表结构的设计 7

4.4 角色表设计 7

4.5 角色-用户,角色-权限关联关系表设计 7

4.6 详细表结构设计 8

第五章 组件设计与实现 9

5.1 设计思路 9

5.2 组织接口 9

5.3 用户接口 9

5.4 权限模块 9

5.5 角色模块 10

5.6 Filter接口与实现filter 10

第六章 结论 11

6.1 技术分析 11

6.2 应用实例 11

致 谢 12

参考文献 13

第一章 引 言

1.1 课题背景

近年来,大量企业在互联网行业中进军,同时各种软件应用的出现,无论是网页还是各种独立软件应用,都飞速发展,迅速量产。但是由于开发平衡的问题,许多开发者只注重内容,忽视了安全问题,造成原本不会发生的信息泄露,信息盗用,隐私透明等严肃问题。所以如何处理,以及如何避免这类问题就成了当务之急。在飞速发展的同时,技术的进步带来了更好的具体解决手段。而在解决用户信息泄露的问题中,同时做到与软件安全并重。达到两者并行,健壮无忧的系统。这样既避免一些不法之人窃取用户个人信息,也达到系统内部信息交流的安全。在开发量级较大的软件中,避免出现权限错误。对程序员来说有利于项目研发,获取反馈信息,能快速迭代开发,既增加用户体验满意度,也做到软件效果成熟。使用Java的Spring Security机制能完美达到这样的效果。

1.2 项目概述

本文使用的关系模型为RBAC模型,设计一个通用权限管理组件。同时又将授权行为分层,分别对应多个关系,设计和实现了该项目的权限分配与功能操作的安全管理。相应关系中的各级别权限都需权限类型进行固定的控制。项目主要使用Spring Security机制,配合Spring Boot,借鉴Apache Shrio权限控制思想。

1.3 基于角色的访问模型

开发中长期使用的访问控制是基于角色的权限访问控制即Role-Based Access Control。它具有强制性,自发性的访问机制。在模型中,角色对应相应权限,用户获取某个成员变量而得到这个角色的属性,而该属性可以是相关权限。通过这种方式将权限抽象化处理进行权限分配。即在实体场景中,某个自然人可以作为单独的一个用户,他本身就拥有相关的职权。而在管理中,拥有管理责权的用户分配其到某一部门中,相应的该自然人也同时拥有了这个部门的权限。这种模型降低了管理难度的同时,又细化了权限范围。以单独的最小权限为原则,使权限范围明确。用户之间可以存在于不同的组织或相同的组织,但是不会出现责任重合的情况。

1.4 目前研究现状

其一是全部使用硬解码配置相关文档,系统调取文件信息获取。这种但是有很大的局限性,即一次修改文档处处增加;其二是建立数据库,资源和链接统一存放在数据库中,但对应权限需要用多个表格细化责任,使用过程中会出现权限不足而不予认证的错误,而且开发人员容易操作失误,且用户信息等配置同第一种方式;其三为明确划分角色同权限范围,使用数据库存放所有的信息。同时重构filter chain,于连接器部分覆盖源代码,实现信息安全。这样使用者只能访问自己角色范畴内被允许的资源。

第二章 相关技术及开发环境

2.1 Java

Java编译语言相对其他的编译语言或直译语言有很大的不同之处。相对于许多编程语言来说,它的优点是跨平台使用,能将源代码编译成字节之后在各种平台的虚拟机上执行代码。以前的JAVA在JVM中运行效率并不高,对于这样的问题,在J2SE1.4.2发布后有了很大程度的改进,很大程度上提高了JAVA的运行速度。与传统型态不相同的是Sum公司推出JAVA时只是作为一门开放性的技术。在许多家JAVA开发公司的强烈要求下,Java软件必须具备互相兼容的特性。所以说Java语言之所以成功并不只是靠Sum公司,且Sunm公司也提出“Java语言靠群体的力量而非公司的力量”的口号。但是这一方式与微软公司的推崇的方式有很大差异,它更注重封闭式的模式。为此,微软公司制作出了.NET平台与之抗衡。但最后Sum公司还是被甲骨文公司收购,Java也就变成了甲骨文公司的产品。

面向对象是Java特有的特性之一。面向对象的设计开发方法普及率很高,它是将行为和状态等属性都赋予一个对象,对于数据的结构都需要通过代码来进行。面向对象设计的使用使得很多大型的软件工程和软件的设计管理都变得更加容易。从而提高功臣的成功率

2.2 Spring Security

Spring Security的前身是Acegi Security。该框架能无缝集成Spring框架,主体作用为为Java用用程序提供身份验证和认证授权功能。充分集成了Spring IoC容器的控制反转功能和依赖注入,同时Security采取了AOP(面向切面编程)的思想,使其具备高度定制化的能力,简化权限系统的配置工作。

剩余内容已隐藏,请支付后下载全文,论文总字数:16260字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;