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));
- }
- }
分享到:
相关推荐
2. **配置Spring Security**:在Spring Security的配置类中,使用自定义的密码编码器替换默认的。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter ...
深入浅析Spring Security 5中默认密码编码器 Spring Security 5中默认密码编码器是密码管理过程中的一项重要改进,引入了更安全的默认机制。对于Spring应用程序来说,升级到Spring Security 5可能会导致问题,因为...
6. **密码编码器**:Spring Security推荐使用`PasswordEncoder`接口,如`BCryptPasswordEncoder`,来确保密码的安全性。在配置中指定这个密码编码器,Spring Security会在用户注册或修改密码时自动进行哈希处理。 7...
- **添加一个密码编码器**:通过配置密码编码器来提高系统的安全性。 - **高级 web 特性**: - **Remember-Me 认证**:允许用户在关闭浏览器后仍然保持登录状态。 - **添加 HTTP/HTTPS 信道安全**:通过配置 ...
Spring Security通过访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter)实现这一过程。开发者可以自定义权限表达式(例如,`hasRole('ROLE_ADMIN')`)并结合方法或URL安全配置进行...
在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...
Spring Security 提供了多种内置的密码编码器,如BCrypt、PBKDF2和SHA-256。然而,根据项目需求,可能需要自定义密码编码策略。可以创建一个实现了`PasswordEncoder`接口的类,实现自己的编码和校验逻辑。 **自定义...
在提供的压缩包`springsecurity配置demo`中,你将找到示例代码和详细说明,这将帮助你更好地理解和实践上述概念。通过学习和实践这些示例,你将能够为自己的Spring应用程序构建强大的安全防护。
1. **SpringSecurity简介**:首先会介绍SpringSecurity的基本概念和架构,包括它如何通过层层过滤器保护Web应用,以及它提供的主要组件如Authentication(认证)和Authorization(授权)。 2. **配置SpringSecurity...
- **配置**:可以使用Java配置类或XML配置文件来定制Spring Security的行为,例如定义访问规则、配置安全过滤器链等。 - **无数据库登录**:在没有数据库的情况下,用户信息可能存储在内存中或者通过硬编码实现,...
在pom文件中配置Spring Security依赖后,可以创建Spring Security工程的结构,包括编写配置类来配置安全性细节,如用户详情服务、密码编码器、安全拦截器等。接着,实现用户登录、登出等页面和功能。在配置过程中,...
- **添加密码编码器**: 指导如何添加密码编码器来增强安全性。 - **高级 Web 功能**: - **记住我认证**: 说明了如何实现“记住我”功能,使得用户在关闭浏览器后仍能保持登录状态。 - **HTTP/HTTPS 通道安全性**:...
此外,还可以通过添加自定义的认证提供者和密码编码器,来增强系统的安全性。 3.3. 高级Web功能 除了基础的认证和授权,Spring Security 3.1还支持一系列高级Web安全特性: - **记住我认证(Remember-Me ...
1. **SpringSecurity架构**:SpringSecurity的核心架构由多个组件构成,包括过滤器链、认证管理、权限控制等。其中,过滤器链是SpringSecurity处理请求的第一道防线,它会拦截所有HTTP请求并进行安全检查。 2. **...
- **使用其他认证提供器**:扩展默认的认证机制,例如添加密码编码器等。 - **高级web特性**: - **Remember-Me认证**:提供自动登录功能,使用户无需每次登录。 - **添加HTTP/HTTPS信道安全**:增强网络通信的...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它为Web应用程序提供了全面的身份验证、授权和服务保护。在这个"Spring Security 入门demo"中,我们将会探讨一系列关键概念和功能,通过提供的...
在第一种方法中,Spring Security的示例项目`spring-security-samples-tutorial-3.0.2.RELEASE`提供了硬编码配置的参考,它演示了如何在XML配置文件中定义用户、密码和权限。这种方法适合初学者快速了解Spring ...
这包括定义访问控制规则、配置用户DetailsService以从数据库加载用户信息,以及配置密码编码器以正确验证用户密码。 1. **配置Spring Security**:在Spring的配置文件中添加`<http>`和`<authentication-manager>`...
6. 密码编码器:添加密码编码器来增强安全强度。 知识点四:Spring Security高级Web特性 1. 记住我认证:提供了“记住我”功能的认证方式,方便用户回访。 2. HTTP/HTTPS通道安全:添加HTTP和HTTPS的安全通道。 3. ...
5. **PasswordEncoder**:Spring Security 提供了多种密码编码器,用于确保存储在数据库中的密码是加密的,提高安全性。 **二、Spring Security 的工作流程** 1. **请求到达**:用户发送 HTTP 请求到服务器。 2. ...