授权方式总结

181 阅读2分钟

secriuty 方式授权:

(核心是通过过滤器链,使用代理类授权给具体功能实现类去做相关验证)

1. 核心在webSecriutyConfig中的配置

{

1.配置userDetil用户详情的bean (可以使用内存方式的bean 或者自定义userDetilServiceImpl实现 userDetil接口

实现自己查询数据库获取用户的基本信息,角色信息,权限资源信息),配置这个bean是为了提供给代理类进行查询用的

2.配置web的过滤器(此处配置哪些路径需要过滤,哪些不需过滤,以及一些授权、加密、获取用户信息bean的配置)

3.配置加密策略的bean(可以选择MD5,base64,使用随机盐加密)

注:认证授权之后的用户身份权限信息会存储在spring上下文中,使得用户信息可以在其他方法中使用,用户的会话可以存储在session中或者redis中

}

2. userDetilServiceImpl 实现类查询数据库获取用户身份权限信息,进行授权

3. 具体业务方法上可以通过注解进行授权验证,或者在webSecriutyConfig中进行web授权

4. 整个授权业务需要5张表,user、role 、permisson、user_role、role_psermisson

spring security oauth2 认证授权:

{

1.认证服务

a.负责认证客户端是否有权限访问,如果该客户端在认证服务中注册过,那么则给资源所有者发送授权页面,

资源所有者同意授权后,则会给客户端返回授权码code。

b.客户端收到授权码之后则会向认证服务申请token令牌,授权验证授权码之后则下发token令牌

注:授权码code方式最安全,password模式和token模式只能内部信任应用之间使用

2.资源服务

a.客户端请求携带token令牌访问资源服务,资源服务需要验证token确认用户(即为授权用户)是否有访问资源服务的权限,有权限则返回正常信息

3.spring security

a.配置认证服务的安全访问拦截

b.配置资源服务的安全访问拦截

oauth2根据使用场景不同,分成了4种模式

授权码模式(authorization code)

简化模式(implicit)

密码模式(resource owner password credentials)

客户端模式(client credentials)

}