【第22期】观点:IT 行业加班,到底有没有价值?

Spring_Security_3.0.1 中文参考文档chapter 6 核心服务

原创 2015年11月19日 10:13:18

Chapter 6.核心服务

6.1 The AuthenticationManager,ProviderManager和AuthenticationProviders

6.1.1 DaoAuthenticationProvider

spring security中最简单的AuthenticationProvider实现是DaoAuthenticationProvider。

它是UserDetailsService的杠杆(作为DAO), 为了获得username, password和GrantedAuthority。它认证用户,通过简单比较密码,在UsernamePasswordAuthenticationToken中, 和UserDetailsService中加载的信息。

<bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="inMemoryDaoImpl"/>
<property name="saltSource" ref bean="saltSource"/>
<property name="passwordEncoder" ref="passwordEncoder"/>
</bean>

6.2 UserDetailsService实现

大多数认证供应器都是用了UserDetails 和UserDetailsService接口。 调用UserDetailsService中的单独的方法:

UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
返回的UserDetails是一个接口,它提供了获得保证非空的认证信息,比如用户名,密码,授予的权限和用户账号是可用还是禁用。大多数认证供应器会使用UserDetailsService, 即使username和password没有实际用在这个认证决策中。

6.2.1 内存认证

一个简单的选择是使用安全命名空间中的 user-service元素:

<user-service id="userDetailsService">
<user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="bob" password="bobspassword" authorities="ROLE_USER" />
</user-service>
也支持使用外部的属性文件:

<user-service id="userDetailsService" properties="users.properties"/>
属性文件需要包含下面格式的内容

username=password,grantedAuthority[,grantedAuthority][,enabled|disabled]
比如

jimi=jimispassword,ROLE_USER,ROLE_ADMIN,enabled
bob=bobspassword,ROLE_USER,enabled
6.2.2 jdbcDaoImpl

Spring Security也包含了一个UserDetailsService, 它包含从一个JDBC数据源中获得认证信息。内部使用了Spring JDBC,所以它避免了负责的功能完全的对象关系映射(ORM)只用来保存用户细节。如果你的应用使用了一个ORM工具, 你应该写一个自己的UserDetailsService 重用你已经创建了的映射文件。返回到JdbcDaoImpl, 一个配置的例子如下所示:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="userDetailsService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
6.2.2.1 权限分组

默认情况下,JdbcDaoImpl会假设用户的权限都保存在authorities表中。

6.3 密码加密

Spring Security的PasswordEncoder 接口用来支持 对密码通过一些方式进行加密,并保存到媒介中。 这通常意味着密码被“散列加密”,使用一个加密算法,比如MD5或者SHA。

6.3.1 什么是散列密码?

一个散列(或摘要)算法是一个单向方法提供了一小段固定长度的输出数据(散列)从一些输入数据中
6.3.2 为散列加点儿盐

一个方法来帮助防止这种问题是使用高强度的密码策略来防止使用常用单词。另一个是在计算散列时使用“盐值”。这是一个对每个用户都知道的附加字符串,它会结合到密码中,在计算散列之前。Spring Security有一个SaltSource接口, 可以被验证供应器用来为特定的用户生成一个盐值。 使用盐值,意味着攻击者必须创建单独的散列字典,为不同的盐值, 这让攻击更难了。

6.3.3 散列和认证

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Spring_Security_3.0.1中文参考文档 1 介绍

1.4.1 项目模块 1.4.1.1 Core:spring-security-core.jar 包含了核心认证和权限控制类和接口,远程支持和基本供应API。持久单独运行的应用,远程客户端,方法(...

Spring_Security_3.0.1中文参考文档 Chapter 8.核心安全过滤器

Chapter 8.核心安全过滤器 8.1 FilterSecurityInterceptor 我们也已经在命名空间中使用过它, 元素的结合在内部对它进行了配置。 现在我们会看如何精确的配置它,使用F...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Spring_Security_3.0.1 中文参考文档chapter 6 核心服务

Chapter 6.核心服务 6.1 The AuthenticationManager,ProviderManager和AuthenticationProviders 6.1.1 DaoAuthen...

Spring Security 2.0 中文文档

http://family168.com/tutorial/springsecurity/html/springsecurity.html  Spring Security参考文档Ben Alex, ...

Hibernate参考文档

HIBERNATE - 符合Java习惯的关系数据库持久化 HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.1.2 ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)