spring 安全框架
F&Q
1. 它这个例子怎么启动hsql数据库的spring-security-samples-contacts-2.0.4
2. 配置步骤。
见启动Spring安全管理的配置步骤,它说明了最小的配置方式。更详细的需要分析配置语法。
3.配置修改方法,权限是对哪个进行过滤的?
4.设计思想是什么?
5.org.springframework.security.userdetails.UserDetailsService对应的数据库表结构
它就要求实现一个方法loadUserByUsername,要求按照名字返回org.springframework.security.userdetails.UserDetails接口
UserDetails loadUserByUsername(String username)
Appfuse中使用了pojo实现了UserDetails接口在查询数据库后就获取对应的pojo类。
6.过滤器实现的URL 那些访问规则access="ROLE_USER"怎么跟用户进行匹配,访问规则可以增加吗?
1.启动Spring安全管理的配置步骤:
第一步:在web.xml文件中加入下面内容。
首先第一件事情是你需要增加下面的过滤器声明到你的web.xml
文件:
<filter>
<filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这提供了一个钩子到Spring安全的Web基础架构。你然后准备开始编辑您的应用程序方面的文件Web 安全服务的配置使用<http>元素。
第二步:在applicationContext.xml文件中加入下面的语句
下面是最少的<http>配置
<http auto-config='true'>
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
这表示,我们的应用程序希望所有的URL在都被保护,而且需要ROLE_USER权限才能访问。
注意这些拦截器<intercept-url>元素定义了针对不同的URL提供了不同的访问要求,如果有多个此类标签的话它的规则是:从上到下,最上面的最先被匹配。
如果想增加一些用户,你能定义一些测试数据在命名空间里。
<authentication-provider>
<user-service>
<user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="bob" password="bobspassword" authorities="ROLE_USER" />
</user-service>
</Authentication-provider>
</Authentication-provider>元素创建DaoAuthentication Provider bean和<user-service>元素创建一个InMemoryDaoImpl.
上面的配置定义了2个用户及他们的密码和访问规则。它也可以加载用户信息从标准的属性文件properties属性user-service
到这里整个配置结束你可以使用spring-security-samples-tutorial进行测试。
2.分析配置语法:
2.1
.auto-config标签包含那些内容
属性就如我们上面所使用的,它的简写语法如下:
<http>
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login />
<anonymous />
<http-basic />
<logout />
<remember-me />
</http>
这些元素分别为表单登陆,匿名认证,基础认证,注销处理,和记住我的提供服务。他们各有特点可以用来改变其行为。
auto-config
需要 UserDetailsService
当使用auto-config没有UserDetailsService在你配置文件中将会出现一个错误(例如,如果你使用LDAP认证).这是因为当auto-config=”true”和请求一个使用了UserDetailsService方法(看remember-me章节获取更多的信息)认证机制的时候,记住我是自动启动的如果你有一个错误是由丢失UserDetailsService造成的,试着删除auto-config设置(和任何的remember-me有你的设置)
2.2.表单和基础登陆选项
大家可能会怀疑在当你被提示去登陆时登陆表单在哪里,因为我们没有被提到任何的HTML和JSP文件,事实上当我们没有明确的设置URL为登陆页面,Spring 安全管理将自动产生一个。基于这个功能,启动和使用标准值为这个URL处理提交登陆。预设的目标网址的用户将被送到广告等等, 然而,该命名空间提供了充足的支持 ,让您可以自定义这些选项,例如,如果您想提供您自己的登录页面,您可以使用:
<http auto-config='true'>
<intercept-url pattern="/login.jsp*" filters="none"/>
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page='/login.jsp'/>
</http>
请注意,您仍然可以使用auto-config。Form-login元素只是覆盖默认设置,另外请注意,我们已经增加了额外的intercept-url元素来说明,任何要求除登录页外都被安全过滤器处理。否则,请求将匹配相应的模式/ ** ,这样它就不可能进入登录页面!如果您想去使用基本身份验证,而不是表单登录,然后更改配置。
<http auto-config='true'>
<intercept-url pattern="/**" access="ROLE_USER" />
<http-basic />
</http>
基本身份验证,然后将优先考虑将用于提示登入当用户尝试访问一个受保护资源。表格登入仍然可以在此配置如果你想使用它,例如通过登录表单中嵌入另一个网页。
2.3使用其他的认证提供者
实际上你需要可扩展的用户信息来源和一些名字添加到应用程序中。您最有可能会希望您的用户信息存储在像数据库或LDAP服务器中。如果你有实现了一个自己的spring 安全org.springframework.security.userdetails.UserDetailsService接口的叫做“ myUserDetailsService ”的类在您的应用程序的中,那么你可以这种使用进行注册,这里的user-service-ref=”userDao”后面appfuse提供一个userDao来注册对应的类UserDaoHibernate
<authentication-provider user-service-ref='myUserDetailsService'/>
如果你想使用数据库,你可以使用
<Authentication-provider>
<jdbc-user-service data-source-ref="securityDataSource"/>
</Authentication-provider>
这里的“ securityDataSource ”是DataSource这种bean的名称,它指向一个数据库的标准Spring安全用户数据表。或者,您可以配置一个Spring安全的 JdbcDaoImpl bean和使用user-service-ref
属性
指向它
2.3.1增加一个密码编码器
往往你的密码资料将使用哈西算法来编码。这里支持<password-encoder>元素。使用SHA编码密码,原始的身份验证提供程序配置就像这个样子
<Authentication-provider>
<password-encoder hash="sha"/>
<user-service>
<user name="jimi" password="d7e6351eaa13189a5a3641bab846c8e8c69ba39f" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="bob" password="4e7421b1b8765d8f9406d87e7cc6aa784c4ab97f" authorities="ROLE_USER" />
</user-service>
</Authentication-provider>
或则使用sha编码密码
<authentication-provider user-service-ref="userDao">
<password-encoder ref="passwordEncoder"/>
</authentication-provider>
<bean id="passwordEncoder" class="org.springframework.security.providers.encoding.ShaPasswordEncoder"/>
当使用哈希密码,这也是一个不错的主意使用盐的价值,以防止字典攻击,Spring安全支持这一点。理想的,您可能需要为每个用户随机生成的盐值,但您可以使用的任何属性的UserDetails对象它可以加载您UserDetailsService
<password-encoder hash="sha">
<salt-source user-property="username"/>
</password-encoder>
您可以使用一个自定义的密码编码器的bean使用ref属性password-encoder.这应当包含一个bean名称中的应用方面这是一个实例,Spring安全的PasswordEncoder接口
2.4. web高级功能
2.4.1.记住我认证
2.4.2增加http/https通道安全
如果您的应用程序同时支持HTTP和HTTPS ,你需要特别的url只能通过HTTPS访问,然后这是直接支持使用requires-channel属性<intercept-url>
<http>
<intercept-url pattern=“/Secure/**" access="ROLE_USER" requires-channel="https"/>
<intercept-url pattern="/**" access="ROLE_USER" requires-channel="any"/>
…
</http>
使用此配置中,如果用户试图访问任何相匹配的“ /Secure/ ** ”模式使用HTTP ,他们将首先被重定向到一个HTTPS的网址. 可用的选择有“http” , “ HTTPS的”或“any“利用价值“any”是指任何HTTP或HTTPS都可以使用.
如果您的应用程序使用非标准端口的HTTP和/或HTTPS ,你可以指定一个端口映射列表如下
<http>
...
<port-mappings>
<port-mapping http="9080" https="9443"/>
</port-mappings>
</http>
2.4.3多用户并发会话控制
如果您想限制只能有一个用户能够登陆到您的应用程序,Spring安全支持这一点。首先您需要添加下面的监听器到您的web.xml文件中,保持Spring安全更新会话期间活动
<listener>
<listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>
然后添加以下行到您的应用程序配置文件中
<http>
...
<concurrent-session-control max-sessions="1" />
</http>
这将阻止用户登录多次-第二次登录将导致第一次的无效。通常您希望以防止第二次登录,在这种情况下,您可以使用applicationContext - security.xml
<http>
...
<concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="true"/>
</http>
第二个登录将被拒绝
2.4.4 OpenID登录
2.4.5增加你知道的过滤器
如果您使用过Spring安全之前,你就会知道,该框架维持一连串的过滤器,以用于其服务。您可能想添加自己的过滤器到指定的位置,或使用自定义一个现有的过滤器。你怎么能做到这一点的名字空间的配置,因为过滤器链中并没有直接接触?该命令的过滤器是严格执行使用的命名空间。每年Spring实施安全过滤Spring Ordered接口和排序过滤器在初始化。标准的过滤器都有一个别名命名空间,该过滤器,别名和命名空间的元素/属性创建过滤器则列于表2.1 , “标准筛选别名和订购” 。
Alias |
Filter Class |
Namespace Element or Attribute |
CHANNEL_FILTER |
ChannelProcessingFilter |
http/intercept-url |
CONCURRENT_SESSION_FILTER |
ConcurrentSessionFilter |
http/concurrent-session-control |
SESSION_CONTEXT_INTEGRATION_FILTER |
HttpSessionContextIntegrationFilter |
http |
LOGOUT_FILTER |
LogoutFilter |
http/logout |
X509_FILTER |
X509PreAuthenticatedProcessigFilter |
http/x509 |
PRE_AUTH_FILTER |
AstractPreAuthenticatedProcessingFilterSubclasses |
N/A |
CAS_PROCESSING_FILTER |
CasProcessingFilter |
N/A |
AUTHENTICATION_PROCESSING_FILTER |
AuthenticationProcessingFilter |
http/form-login |
BASIC_PROCESSING_FILTER |
BasicProcessingFilter |
http/http-basic |
SERVLET_API_SUPPORT_FILTER |
SecurityContextHolderAwareRequestFilter |
http/@servlet-api-provision |
REMEMBER_ME_FILTER |
RememberMeProcessingFilter |
http/remember-me |
ANONYMOUS_FILTER |
AnonymousProcessingFilter |
http/anonymous |
EXCEPTION_TRANSLATION_FILTER |
ExceptionTranslationFilter |
http |
NTLM_FILTER |
NtlmProcessingFilter |
N/A |
FILTER_SECURITY_INTERCEPTOR |
FilterSecurityInterceptor |
http |
SWITCH_USER_FILTER |
SwitchUserProcessingFilter |
N/A |
可以添加您自己的过滤器的堆栈,使用custom-filter元件之一,这些名称来指定您的过滤器的位置应该会出现在
<beans:bean id="myFilter" class="com.mycompany.MySpecialAuthenticationFilter">
<custom-filter position="AUTHENTICATION_PROCESSING_FILTER"/>
</beans:bean>
您也可以使用after或before 属性,如果您希望您的过滤器插入之前或之后的另一个过滤器堆栈中名字“FIRST”和“LAST”可以用来表明您希望您的过滤器出现之前或之后整个堆栈,分别
2.4.6会话固定攻击保护
会话固定攻击是一种潜在的危险,有可能的恶意攻击者创建一个会话通过访问网站然后说服另一个用户登录的同一个会话(例如,由向他们发送一个链接包含会话标识符作为参数,)Spring安全防范这将自动创建一个新的会话当用户登录如果你并不需要这种保护或有冲突的一些其他要求,您可以控制的行为,利用session-fixation-Protection
属性<http> ,其中有三个选择
· migrateSession
-创建一个新的会议并复制现有的会议属性的新的会议。这是默认
· none
-不要做任何事情。最初的会议将被保留
· newSession
-创建一个新的“干净”的会议,不照搬现有的会话数据
2.4.6设置自定义验证入口
2.5方法安全
Spring安全在2.0版大大改善提高了添加到您的安全服务层的方法。如果您正在使用Java 5或更高版本,那么支持符合JSR - 250提供的安全说明,以及框架内的本地@Secured注解. 如果您正在使用Java 5或更高版本,那么支持符合JSR - 250提供的安全说明,以及框架内的本地@Secured注解. 您可以申请到一个安全的bean ,使用intercept-methods元素装饰的bean声明,或者您可以安全多种beans整个服务层使用AspectJ风格的切入点
2.5.1 <global-method-security>
元素
这个元素用来在您的安全应用程序中启用基于安全的注解(通过这个元素中设置响应的属性)。并组一起安全切入点声明,将适用于在您的整个应用范围内。您应该只宣布一个<global-method-security>元素。并组一起安全切入点声明,将适用于在您的整个应用范围内。您应该只宣布一个<global-method-security>元素。以下的声明将使支持这两种类型的注释
<global-method-security secured-annotations="enabled" jsr250-annotations="enabled"/>
2.5.2使用protect-pointcut
添加安全切点
protect-pointcut是强大的,它允许您可以用简单的声明将许多个bean进行安全声明,考虑下面的例子
<global-method-security>
<protect-pointcut expression="execution(* com.mycompany.*Service.*(..))" access="ROLE_USER"/>
</global-method-security>
这将保护所有的方法对bean宣布在应用方面的类是在com.mycompany包和类名的目的, “服务”.只有用户处于ROLE_USER规则才能够调用这些方法。正如网址匹配,最具体的比赛必须首先列表中的切入点,作为第一个匹配的言论将被使用
2.5.3 intercept-methods
修饰
这种替代的语法允许您指定安全的一个特定的bean加入此元素的bean本身
<bean:bean id="target" class="com.mycompany.myapp.MyBean">
<intercept-methods>
<protect method="set*" access="ROLE_ADMIN" />
<protect method="get*" access="ROLE_ADMIN,ROLE_USER" />
<protect method="doSomething" access="ROLE_USER" />
</intercept-methods>
</bean:bean>
这可让您设定的安全属性为特殊的方法对bean或简单wildcarded模式
2.6默认的访问判定管理
本节假定您对spring安全的访问控制的基础架构有一定的了解。如果您没有可以跳过它,回来以后,因为这部分是唯一真正有关的人谁需要做一些个性化,才能使用超过简单的基于角色的安全性。当您使用命名空间配置。默认AccessDecisionManager的实例会自动为您注册,将用于制造机会的决定方法调用和Web网址访问基于属性的访问您指定在您的intercept-url
和protect-pointcut
声明(和在说明如果您使用的是注释安全方法)默认的策略是使用AffirmativeBased AccessDecisionManager与RoleVoter和Authenticated Voter
2.6.1
自定义AccessDecisionManager
如果你需要使用更复杂的访问控制策略则是易于设置的替代方法和为网络安全, 对于方法安全,你这样做的通过设置access-decision-manager-ref
属性global-security
to的ID适当AccessDecisionManager bean中的应用背景
<global-method-security access-decision-manager-ref="myAccessDecisionManagerBean">
...
</global-method-security>
语法web安全是相同的,但是的HTTP内容
<http access-decision-manager-ref="myAccessDecisionManagerBean">
...
</http>
2.6.2认证管理
我们已经谈到了这样的想法,即命名空间配置为你自动登记认证管理bean。这是一个Spring安全的ProviderManager类的实例,您可能已经熟悉的如果您使用过之前的框架内, 您可能要注册额外的Authentication Provider
与ProviderManager,你可以做到这一点使用<custom-Authentication-provider>元素bean,例如:
<bean id="casAuthentication Provider”
class="org.springframework.security.providers.cas.CasAuthentication Provider”>
<security:custom-Authentication-provider />
...
</bean>
另一种较常见的要求是,另一个豆的背景可能需要提及Authentication
管理器有一种特殊的元素,您可以注册一个别名Authentication Manager
和然后您就可以使用这个名称的其他地方您的应用程序方面。
<security:Authentication-manager alias=“AuthenticationManager"/>
<bean id="casProcessingFilter" class="org.springframework.security.ui.cas.CasProcessingFilter">
<security:custom-filter position="CAS_PROCESSING_FILTER"/>
<property name=“AuthenticationManager" ref=“AuthenticationManager"/>
...
</bean>
3.DAO认证
spring安全包括生产,质量Authentication Provider
实现叫做DaoAuthentication Provider。
此身份验证提供兼容所有的身份验证机制UsernamePasswordAuthentication
标记
,并可能是最常用的范围内提供,最喜欢的其他认证供应商,在DaoAuthentication提供商利用了UserDetailsService ,以查找的用户名,密码和GrantedAuthority [ ]与大多数的其他认证供应商,利用UserDetailsService,
这实际上需要身份验证提供的密码将提交和供应商将实际评估性或其他有效的密码,在身份验证请求对象
3.1配置
除了增加DaoAuthentication提供您ProviderManager名单(截至讨论开始时,这一部分的参考指南并确保适当的认证机制配置提出UsernamePasswordAuthentication令牌的配置供应商本身很简单
<bean id="daoAuthentication Provider”
class="org.springframework.security.providers.dao.DaoAuthentication Provider”>
<property name="userDetailsService" ref="inMemoryDaoImpl"/>
<property name="saltSource" ref bean="saltSource"/>
<property name="passwordEncoder" ref="passwordEncoder"/>
</bean>
该PasswordEncoder和SaltSource是可选。这个PasswordEncoder提供的编码和解码的密码中提出的UserDetails对象返回的配置UserDetailsService一个SaltSource使密码填入一个“盐” ,这提高了安全密码验证库。PasswordEncoder的实现提供了Spring安全涵盖的MD5 ,SHA和明文编码. 实现两个SaltSource还规定:所有SystemWideSaltSource编码与密码相同的盐,ReflectionSaltSource ,其中检查某一财产归还UserDetails对象,以获取盐. 请参阅的Javadoc的进一步细节,这些可选功能. 除了上述的特性,该DaoAuthentication提供支持可选缓存UserDetails对象该UserCache界面使DaoAuthentication提供商放置一个UserDetails对象的缓存,并找回它从缓存的企图后,随后验证的相同的用户名. 默认情况下, DaoAuthentication供应商使用NullUserCache ,可实现无缓存一个可用的缓存执行还规定, EhCacheBasedUserCache ,这是配置如下
<bean id="daoAuthentication Provider"
class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="userDetailsService"/>
<property name="userCache" ref="userCache"/>
</bean>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:/ehcache-failsafe.xml"/>
</bean>
<bean id="userCacheBackend" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager" ref="cacheManager"/>
<property name="cacheName" value="userCache"/>
</bean>
<bean id="userCache" class="org.springframework.security.providers.dao.cache.EhCacheBasedUserCache">
<property name="cache" ref="userCacheBackend"/>
</bean>
所有Spring安全EH-CACHE的实现(包括EhCacheBasedUserCache )要求EH-CACHE缓存Cache对象。Cache对象可以获得从你喜欢的地方,但我们建议你使用Spring的工厂类如上述配置.如果使用Spring的工厂类,请参阅Spring文件进一步详细说明如何优化缓存存储位置,内存使用情况,驱逐政策,超时等
注意:
在大多数情况下如果您的应用程序是一个有状态的Web应用程序,您不需要使用缓存的用户验证信息将被存储在HttpSession设计作出的决定,是不支持帐户锁定在DaoAuthentication供应商,因为这样做会增加的复杂性UserDetailsService接口。比如,一个方法将需要增加伯爵身份验证不成功的尝试这种功能可以很容易地利用提供的应用程序事件发布功能在下文讨论DaoAuthentication提供返回一个验证对象这反过来其主要属性集。主要的将会是一个String (基本上是用户名)或UserDetails对象(这是抬起头来从UserDetailsService )。如果使用容器适配器,或者如果您的申请被写入与字符串(就是这样的情况之前发布Spring安全0.6 ) ,你应该设置DaoAuthentication Provider.forcePrincipal AsString属性设置为True在您的应用背景
4.<http auto-config="true">对应的类文件
<http>
org.springframework.security.config.HttpSecurityBeanDefinitionParser
类里定义继承于Object实现org.springframework.beans.factory.xml.BeanDefinitionParser接口
public class HttpSecurityBeanDefinitionParser extends Object implements BeanDefinitionParser
官方解释为
Sets up HTTP security: filter stack and protected URLs
设置HTTP安全:过滤栈和保护URL
包含的属性在
抽象类org.springframework.security.config.Elements中定义
属性名 |
作用 |
"realm" |
如果这个没有内容就让范围默认为Spring Security Application |
"Spring Security Application" |
常量字符串 |
"pattern" |
如果为空报path attribute cannot be empty or null路径属性不能为空或null |
"session-fixation-protection" |
被一个叫做registerSessionFixationProtectionFilter方法调用 |
"none" |
为none常量字符串 |
"newSession" |
|
"migrateSession" |
是否设置防止固定会话攻击的属性 |
"path-type" |
如果此属性为空那么默认设置为ant org.springframework.security.util.AntUrlPathMatcher Ant path strategy for URL matching. Ant的URL匹配路径策略 |
"ant" |
ant的常量字符串 |
"regex" |
如果path-type为regex那么就使用org.springframework.security.util.RegexUrlPathMatcher |
"filters" |
如果此属性不为none那么报Currently only 'none' is supported as the custom filters attribute |
"none" |
|
"access" |
|
"requires-channel" |
看你需要那种访问协议,可以为http;https;any如果都不是就报Unsupported channel不能支持的信道。 |
"http" |
常量字符串 |
"https" |
常量字符串 |
"any" |
常量字符串 |
"method" |
为空方法设置为null |
"create-session" |
是否创建会话,3个选项always;never;ifRequired |
"ifRequired" |
常量字符串 |
"always" |
常量字符串 |
"never" |
常量字符串 |
"lowercase-comparisons" |
小写字体的区分有2个属性 true;false |
"true" |
常量字符串 |
"auto-config" |
默认情况下autoConfig为false如果设置auto-config有值autoConfig为true |
"false" |
常量字符串 |
"servlet-api-provision" |
增加servlet-api整合过滤器,如果为空就设置为true |
"true" |
常量字符串 |
"access-decision-manager-ref" |
设置访问管理参数为http;如果没有设置访问管理id就设置为_accessManager |
"user-service-ref" |
如果不为null就设置userDetailsService |
"entry-point-ref" |
我们需要建立主要的登入点首先检查自定义的登入点是set,非null就设置。 |
"once-per-request" |
如果设置为false程序将设置observeOncePerRequest为false |
"access-denied-page" |
如果非null设置访问被拒绝后的显示页面 |
<form-login />
对应的org.springframework.security.config.FormLoginBeanDefinitionParser
由于作者对此类没作详细的介绍所以,简单的做法是猜.
属性 |
作用 |
"login-processing-url" |
登陆界面提交的表单所带的url,为空默认设置为/j_spring_security_check 如: login-processing-url="/j_spring_security_check" <form method="post" id="loginForm" action="/shop/j_spring_security_check" |
"login-page" |
强制等录的页面如:login-page="/login.jsp" |
spring_security_login |
|
"default-target-url" |
默认登陆成功后显示的页面,如果为空默认设置为”/”如: default-target-url="/listAccounts.html" |
"always-use-default-target" |
设置为ture增加条件alwaysUseDefaultTargetUrl.为true 非null使用默认的上下文。默认为”/” |
"/" |
字符串常量 |
"authentication-failure-url" |
认证失败的时候显示的页面,如果没设置默将重定向到登陆页面同login-page。如: authentication-failure-url="/login.jsp?error=true" |
/spring_security_login?login_error |
如果没有设置login-page。认证失败的URL就为 /spring_security_login?login_error |
<anonymous />
对应org.springframework.security.config.AnonymousBeanDefinitionParser类
属性名
"key" |
|
"doesNotMatter" |
|
"username" |
|
"roleAnonymous" |
|
"granted-authority" |
|
"ROLE_ANONYMOUS" |
|
<http-basic />
<logout />
对应org.springframework.security.config.LogoutBeanDefinitionParser类
属性名 |
作用 |
"logout-success-url" |
|
"/" |
|
"invalidate-session" |
|
"true" |
|
"logout-url" |
|
"/j_spring_security_logout" |
|
<password-encoder>
属性名 |
对应的算法 |
"ref" |
引用的bean的id |
"hash" |
选择对应混淆算法简称如:password-encoder hash="sha" sha-256; md4; md5{sha} |
"base64" |
|
"plaintext" |
org.springframework.security.providers.encoding.PlaintextPasswordEncoder |
"sha" |
org.springframework.security.providers.encoding.ShaPasswordEncoder |
"sha-256" |
org.springframework.security.providers.encoding.ShaPasswordEncoder |
"md4" |
org.springframework.security.providers.encoding.Md4PasswordEncoder |
"md5" |
org.springframework.security.providers.encoding.Md5PasswordEncoder |
"{sha}" |
org.springframework.security.providers.ldap.authenticator.LdapShaPasswordEncoder |
<remember-me />
属性名 |
用法 |
"key" |
如果没有设置默认为SpringSecured |
"SpringSecured" |
字符串常量 |
"data-source-ref" |
|
"services-ref" |
|
"token-repository-ref" |
|
"user-service-ref" |
|
"token-validity-seconds" |
|
推荐阅读
-
构建自己的PHP框架--抽象Controller的基类,框架controller_PHP教程
-
spring 操作elasticsearch查询使用方法
-
[Oracle] 数据库安全之
-
CodeIgniter框架入门教程第一课 Hello World!
-
详解Spring MVC 集成EHCache缓存
-
Spring中自定义Schema如何解析生效详解
-
Spring Boot整合Swagger2的完整步骤详解
-
Spring Data + Thymeleaf 3 + Bootstrap 4 实现分页器实例代码
-
利用Jasypt如何对Spring Boot配置文件加密
-
destoon利用Rewrite规则设置网站安全