1:什么是springsecurity
前身是acegi security,而后更名为springsecurity,是 Spring 项目组中用来提供安全认证服务的框架。目前已经升级到5.x.x的版本,在java web中应用于安全领域:认证、授权等。同样java-shiro框架也适用于web应用安全。它们有着同样的概念,只是称谓不同。
认证:则是确定某个主体在系统中的合法性,也称为身份认证。
授权:指主体认证通过之后,是否具有执行权限的过程。
principal:身份,为主体的标识,可以是用户名,邮箱,手机号等
credential:凭证,如密码/数字证书等
常见的principal/credential就是用户名密码了。
2:springsecurity集成认证的技术
①:HTTP BASIC authentication headers (一个基于IEFT RFC 的标准)
②:HTTP Digest authentication headers (一个基于IEFT RFC 的标准)
③:HTTP X.509 client certificate exchange(一个基于IEFT RFC 的标准)
④:LDAP (一个非常常见的跨平台认证需要做法,特别是在大环境)
⑤:Form-based authentication(简单的用户界面需求)
⑥:OpenID authentication(去中心化的身份认证方式)
......
3:springsecurity中一些重要概念
①:过滤器链
Filter-chain过滤器链:Filter优先级高于Servlet,过滤器链中的Filter过滤请求并根据需要是否将请求放行到下个Filter并最终到达Servlet的资源,那么最基本的身份验证和授权等等就是通过Filter-chain去实现。
4:那么该如何自实现鉴权操作
①:构建用户N->N角色N->N权限几张表
②:写工具类把URL资源加载进权限表中
③:写个后台配置好角色对应权限的关系,用户和角色的关系并加载进内存
④:自定义Filter限制用户访问URL权限
网友评论