MateCloud微服务前后端分离项目,集成Spring Security关键要点

为什么要用Spring Security?

大家可能会看到单体应用的框架的开源项目,大量采用的Apache Shiro的安全框架,集成起来简单又方便。反观之Spring Security设计复杂,且源码看起来又难懂。在Spring Boot和Spring Cloud中集成的原因如下:

  1. Shiro对Oauth2的集成度不够,如果放到前后端分离的项目,需要写大量的业务代码;
  2. spring-boot-starter-security,Spring Boot官方提供了Spring Security的工具类,容易快速集成;
  3. Spring Security业务实现完善,同时也集成了一些安全相关的组件,安全性更强;

MateCloud中安全认证集成了哪些功能?

  • 支持多种登录认证模式:密码登录、验证码登录、社交登录、简化模式、授权码模式、客户端模式、刷新Token模式等
  • 独创的自有的认证体系,不依赖于security框架进行权限校验;且支持网关和模块集成两种验证模式;
  • 集成了justauth,实现快速支持:微信、QQ、支付宝等多家的社交登录模式;
  • 在网关认证模式中,集成了用户同一个客户端只允许登录一个用户的功能;

安全认证相关模块

先引入统一依赖

参考文档:http://www.mate.vip/archives/278

security集成,实现了安全认证相关的功能

<dependency>
    <groupId>vip.mate</groupId>
    <artifactId>mate-starter-security</artifactId>
</dependency>

此模块目前专为mate-uaa使用,用于登录并获取token。

auth集成,实现了是否登录的判断和接口细颗粒度的鉴权

<dependency>
    <groupId>vip.mate</groupId>
    <artifactId>mate-starter-auth</artifactId>
</dependency>

此模块用于各微服务模块,主要对token进行验证,并支持权限校验。

使用方法

  • 在方法上面增加注解
    @PreAuth

    这个注解支持对token的合法性和有效期验证

  • 扩展支持
    @PreAuth(hasPerm = "client:add")

    扩展后除验证token的合法性和有效期外,还验证该用户是否有client:add的接口使用权限