spring security 密码编码器
(2011-07-19 10:28:34)
我们还进行了md5密码扩展,这也要在Security框架进行配置,在表中插入一些信息,就可以进行数据库验证了,此时Security框架的配置如下,修改认证管理器:
- <security:authentication-manager>
-
<security:authentication-provider>
-
<security:password-encoder ref="md5Encoder" />
-
<security:jdbc-user-service data-source-ref="dataSource" />
-
</security:authentication-provider>
-
</security:authentication-manager>
这里我们配置了jdbc数据源和密码编码器,因为连MD5加密方式也是我们自定义的,这样安全系数更高。要使用自定义的加密器,别忘了编写加密器的bean。
- <bean id="md5Encoder" class="org.ourpioneer.board.util.MD5Encoder" />
加密器类需要实现PasswordEncoder接口,然后编写我们自己的加密方案,加密器很简单,如下设计:
- package org.ourpioneer.board.util;
-
import org.springframework.dao.DataAccessException;
-
import org.springframework.security.authentication.encoding.PasswordEncoder;
-
public class MD5Encoder implements PasswordEncoder {
-
public String encodePassword(String origPwd, Object salt)
-
throws DataAccessException {
-
return MD5.getMD5ofStr(origPwd);
- }
-
public boolean isPasswordValid(String encPwd, String origPwd, Object salt)
-
throws DataAccessException {
-
return encPwd.equals(encodePassword(origPwd, salt));
- }
- }
其中使用到的MD5加密类为:
- package org.ourpioneer.board.util;
-
import java.security.MessageDigest;
-
-
public class MD5 {
-
-
public static String getMD5ofStr(String origString) {
-
String origMD5 = null;
-
try {
-
MessageDigest md5 = MessageDigest.getInstance("MD5");
-
byte[] result = md5.digest(origString.getBytes());
- origMD5 = byteArray2HexStr(result);
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return origMD5;
- }
-
-
private static String byteArray2HexStr(byte[] bs) {
-
StringBuffer sb = new StringBuffer();
-
for (byte b : bs) {
- sb.append(byte2HexStr(b));
- }
-
return sb.toString();
- }
-
-
private static String byte2HexStr(byte b) {
-
String hexStr = null;
-
int n = b;
-
if (n < 0) {
-
// 若需要自定义加密,请修改这个移位算法即可
-
n = b & 0x7F + 128;
- }
-
hexStr = Integer.toHexString(n / 16) + Integer.toHexString(n % 16);
-
return hexStr.toUpperCase();
- }
-
-
public static String getMD5ofStr(String origString, int times) {
- String md5 = getMD5ofStr(origString);
-
for (int i = 0; i < times - 1; i++) {
- md5 = getMD5ofStr(md5);
- }
-
return getMD5ofStr(md5);
- }
-
-
public static boolean verifyPassword(String inputStr, String MD5Code) {
-
return getMD5ofStr(inputStr).equals(MD5Code);
- }
-
-
public static boolean verifyPassword(String inputStr, String MD5Code,
-
int times) {
-
return getMD5ofStr(inputStr, times).equals(MD5Code);
- }
-
-
public static void main(String[] args) {
-
System.out.println("123:" + getMD5ofStr("123"));
-
System.out.println("123456789:" + getMD5ofStr("123456789"));
-
System.out.println("pioneer:" + getMD5ofStr("pioneer"));
-
System.out.println("123:" + getMD5ofStr("123", 4));
- }
- }
分享到:
相关推荐
主要介绍了Spring Security5中默认密码编码器,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
完成的Spring Security实例,其中包括自定义数据库表结构、自定义登陆页面、使用数据库管理资源、自定义的密码编码器、自定义访问拒绝页面、动态管理资源结合自定义登录页面等方面的例子
那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中,已经实现过,并经过验证; 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码...
添加密码编码器 56 6.3高级Web功能 56 6.3.1记得我认证 56 6.3.2添加HTTP / HTTPS通道安全 57 6.3.3会话管理 57 检测超时 57 并发会话控制 58 会话固定攻击保护 59 6.3.4 OpenID支持 60 属性交换 61 6.3.5响应头 62 ...
添加一个密码编码器 2.3. 高级web特性 2.3.1. Remember-Me认证 2.3.2. 添加HTTP/HTTPS信道安全 2.3.3. 会话管理 2.3.3.1. 检测超时 2.3.3.2. 同步会话控制 2.3.3.3. 防止Session固定攻击 2.3.4. 对OpenID的...
添加一个密码编码器 2.3. 高级web 特性 2.3.1. Remember-Me 认证 2.3.2. 添加HTTP/HTTPS 信道安全 2.3.3. 会话管理 2.3.3.1. 检测超时 2.3.3.2. 同步会话控制 2.3.3.3. 防止Session 固定攻击 2.3.4...
Spring Security3的使用方法有4种: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 三种是细分角色和权限,并将...
添加一个密码编码器 2.3. 高级web特性 2.3.1. Remember-Me认证 2.3.2. 添加HTTP/HTTPS信道安全 2.3.3. 会话管理 2.3.3.1. 检测超时 2.3.3.2. 同步会话控制 2.3.3.3. 防止Session固定攻击 2.3.4. 对...
密码编码器 笔记 内存中(默认) 记忆体 在记忆中 委派 默认配置文件(不使用PasswordEncoder) 数据库 D B JDBC 没有 通过jdbcAuthentication方法(嵌入式DB的Maven依赖项) 客户服务 USER_SERVICE USER_...
一种是全部利用配置文件,将用户、权限、...三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、
Spring启动安全oauth2 本文旨在提供一个Spring Boot安全性oauth2的工作示例。 要开始使用该项目,只需签出该项目并按照application.properties设置数据库配置,... 请访问以获取有关Spring Security的其他类似文章。
oAuth2-sample 该项目是一个oAuth2 POC,由所有3个oAuth参与者组成:身份验证服务器,资源服务器和客户端应用程序。 各方由自己的WAR代表。... 在Spring-Security 5中更改了密码编码器的机制。我不得
Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring ...
响应式Spring Security 5研讨会这是一个动手实践研讨会,内容涉及使用Spring Security 5.x保护基于响应式Spring Boot 2.x的Web应用程序。介绍话题该研讨会将涉及的主题是: 使用和基本概念(即安全性Web筛选器链) ...
security的拦截器。将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、InvocationSecurityMetadataSourceService和...
本项目示例基于spring boot最新版本(2.4.0)实现,Spring Boot,Spring Cloud学习示例,将持续更新…… 在基于Spring Boot,Spring Cloud的分布式微服务开发过程中,根据实际项目环境,需要选择,集成符合项目需求...
Spring Data JPA: 简化了数据访问层(DAO)的编码工作,通过JPA与MySQL数据库交互。 MySQL: 作为持久化存储,负责保存用户信息、设备状态等关键数据。 Spring Security: 提供认证和授权机制,确保系统的安全性。 ...
bx-cloud#注意由于升级到了SpringCloud,认证授权改为SpringSecurity Oauth2.0,需要SpringBoot+JWT+Shiro+MybatisPlus单项目架构的,请切换至分支github网速如果不好,请使用网盘地址:链接: 提取码:ah39前端(vue ...
11-3,11-4 -Spring Security 实战-前后台编码 第12章 博客系统的整体框架实现 12-1 -整体的需求回顾 12-2 -后台整体控制层、API 实现 12-3 -前台整体布局实现 12-4 -API 讲解 第13章 博客系统的用户管理实现...
使用Spring数据REST和手动编码的Apis REST API 与来自数据库的自定义用户一起使用SPRING Security 使用Hateos的链接 分页和排序示例 Spring Data JPA Complex映射一对多,多对一,多对多 MySQL数据库连接 多模块...