尊暮萧的个人空间 - spring-security
type: channel
link: https://www.zunmx.top/tag/spring-security/
items: springboot 3.1.2 + springsecurity 6.1.2 基于数据库登录演示
items: Spring-Security模块实用性总结
items: Java--CAS 总结

springboot 3.1.2 + springsecurity 6.1.2 基于数据库登录演示
type: item
date: 2023-11-24T18:04:28+08:00
description: 引言好久没有创建项目了，spring更新的也太快了，不做不知道，有一些常用的方法都被弃用了，这里就做个简单的演示把。主要还是springSecurity配置文件这块比较重要。文档：官方文档中文文档创建项目pom文件<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.2</version> <relativePath/> </parent> <groupId>top.zunmx</groupId> <artifactId>CSM</artifactId> <version>0.0.1-SNAPSHOT</version> <name>CSM</name> <description>CSM</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.9</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springfr…

Spring-Security模块实用性总结
type: item
date: 2021-05-11T02:19:00+08:00
description: 引言我本身对于网络安全是比较感兴趣的，对于网络安全，当前时代还是蛮重要的，想到之前的毕业设计都是围绕着网络安全展开的，废话不多说，最近项目中用到了安全框架，所以进行总结一番。依赖当然，使用maven进行依赖管理还是非常方便的。这里附上我的pom文件<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.alc</groupId> <artifactId>security</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <webVersion>3.0</webVersion> <spring.version>4.2.5.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>4.1.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>4.1.0.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</art…

Java--CAS 总结
type: item
date: 2021-05-07T23:26:00+08:00
description: CAS入门单点登录单点登录(Single Sign On)-->(SSO)，意思就是在一个应用上登录后，在其他应用上也保留登录状态。What's CASCAS是耶鲁大学发起的开源项目，巴拉巴拉巴拉~~，主要是为了解决单点登录的问题，大概流程是这样的。步骤访问服务：SSO客户端发送请求访问应用系统提供的服务资源定向认证：SSO客户端会重定向用户请求到SSO服务器用户认证：用户身份的认证发放令牌：SSO服务器产生令牌(Service Ticket)验证令牌：SSO服务器校验令牌(Service Ticket)的合法性，通过后允许客户端访问服务传输用户信息：SSO服务器验证令牌通过后，传输认证结果给客户端CAS服务器端部署CAS 服务端是war包，所以需要服务器的支撑，这里以Tomcat为例。这里以Windows平台为例，Tomcat部署到了本机把cas.war放到webapp下，启动tomcat。启动后访问http:/localhost:8080/cas/login此时你会看到登陆页面，默认的登录用户名和密码是固定的，casuser/Mellon修改默认用户名和密码找到cas/WEB-INF/deployerConfigContext.xml<bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> <property name="users"> <entry key="casuser" value="Mellon" /> </property> </bean>这里我们发现，用户名和密码是成对存在的，并且写死了，对于部署真实项目是远远不能满足需求的，但是有没有发现，bean关键字，想到了Spring。那我们能不能使用MySQL呢？答案是可以的。从MySQL中认证用户这里我们可以尝试使用曾经的连接池和MySQL驱动，对接到CAS中，我们从上面的XML中可以看到，bean的id为primaryAuthenticationHandler，也就是主要的认证处理者，处理者是用户名和密码的键值对，那么我们由CAS的QueryDatabaseAuthenticationHandler进行对接就好了。对于认证我们的查询压力以及性能的的考虑，我们使用连接池进行操作。从上面的XML我呢见中，我们也可以发现，验证部分在deployerConfigContext.xml文件中，所以我们自己定义bean，并且让我们自己的bean来处理认证过程。<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/casDemo?characterEncoding=utf8" p:user="study" p:password="123456" /> <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" c:encodingAlgorithm="MD5" p:characterEncoding="UTF-8" /> <bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler" p:dataSource-ref="dataSource" p:sql="select password from t_user where username = ?" p:passwordEncoder-ref="passwordEncoder" />这时，我们需要把默认的处理器换成我们自己的。dbAuthHandler<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" />:warning: 注意，如果是连接其他机器，应该把数据库的远程访问权限打开(创建远程访问的账号[%] 或者针对某一个IP地址，具体情况具体操作)更改端口号如果开放了多个Web应用，端口冲突或者分布式情况，有修改端口号需求的，修改Tomcat的ip就不用说了，这里是需要修改CAS的配置，找到WEB-INF/cas.properties，修改server.name属性值，具体到tomcat…