Spring security 有哪几种认证策略呢?
下文讲述Spring Security中的认证策略的简介说明,如下所示:
将认证提供者和用户服务装配在一起,适用于只有一种用户服务
都存储在数据库中,那么可以使用Spring Security提供的<jdbc-usr-service>
当设置data-source-ref数据源
则spring security将使用sql语句从数据库中查找用户和权限信息
- 内存用户存储库,即显示的配置在spring配置文件中
- 基于jdbc的用户存储库
- 基于LDAP的用户存储库
- OpenID 分散式用户身份识别系统
- 中心认证服务(CAS)
- X.509证书
- 基于JAAS的提供者
配置内存用户存储库
首先建立一个用户服务,配置所有用户和权限信息。然后交给认证管理器管理,认证管理器会将认证的任务交给一个或多个认证提供者。<!-- 用户服务--> <user-service id="userService"> <user name="java265-user1" password="123456" authorities="ROLE_ADMIN"> <user name="java265-admin" password="888888" authorities="ROLE_JavaAdmin"> ...... </user-service> <!-- 认证管理器--> <authentication-manager> <authentication-provider user-service-ref="userService"/> </authentication-manager>另一种配置方式:
将认证提供者和用户服务装配在一起,适用于只有一种用户服务
<!-- 认证提供者--> <authentication-provider> <!-- 用户服务--> <user-service id="userService"> <user name="java265-user1" password="123456" authorities="ROLE_ADMIN"> <user name="java265-admin" password="888888" authorities="ROLE_JavaAdmin"> ...... </user-service> </authentication-provider>
基于数据库进行认证
这是我们日常开发中,常用的一种操作方式,因为用户的登录名和密码都存储在数据库中,那么可以使用Spring Security提供的<jdbc-usr-service>
当设置data-source-ref数据源
则spring security将使用sql语句从数据库中查找用户和权限信息
users-by-username-query:使用用户名查询用户名,密码以及是否可用状态 authorities-by-username-query:使用用户名查询用户被用户名和授权的权限 group-authorities-by-username-query:使用用户名查询用户组的权限
<jdbc-user-service id="userService" data-source-ref="dataSource" users-by-username="select username,password, true from user where username=?" authories-by-username-query="select username,role from user_role where username=?" /> <authentication-manager> <authentication-provider user-service-ref="userService"/> </authentication-manager>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。