这篇文章主要是针对我最近学习的基于Spring security+Oauth2来解决权限认证功能,分别集成了Nacos、Gateway、Security、Oauth2、Redis这些组件来实现权限认证的微服务。
实现思路
主要是通过认证服务进行统一的认证,网关服务如何转发请求和校验认证、鉴权,其他API服务处理自己的逻辑,安全认证的逻辑只存在于Security和Gateway中。
这是Nacos中项目的配置文件,这里我用的Nacos版本是2.0.4
服务方面主要分为:
- auth-service:认证服务,主要是负责对于OAuth2 认证服务配置,分为定义授权和令牌端点以及令牌服务、配置令牌端点(Token Endpoint)的安全约束、配置客户端详情、集成了erp-common包里面的erp-common-security安全组件,自定义生成令牌这边给基于Redis实现,令牌保存到缓存。
- erp-common:主要是通用模块封装的common包,主要是有core里面一些常量类定义、web层的通用处理,security安全认证一些配置,包括通过服务于服务之间通过Feign请求调用也需要token,剩下的就是一些log日志、swagger、mq集成的一些配置了,这里就不一一做介绍了。
<description>
通用模块
</description>
<modules>
<module>erp-common-core</module>
<module>erp-common-security</module>
<module>erp-common-redis</module>
<module>erp-common-swagger</module>
<module>erp-common-datascope</module>
<module>erp-common-log</module>
<module>erp-common-mq</module>
</modules>
- gateway:网关服务,负责请求转发和鉴权,整合Spring Security+Oauth2,引入sentinel来做链监控;
说明一下:我这里的Nacos、Redis服务都是部署在Docker上面的,因为项目中也引入了sentine和rabbitmq所以启动docker容器的时候都要进行启动。
- api-system:api接口服务,主要是通过api接口封装获取用户信息,用户权限。
- monitor:监控中心服务,这边也引入了Spring Cloud admin来作为服务的监控中心。
如何进行认证
首先要在Docker容器上启动我们的Nacos和Redis服务,然后启动我们的auth-service、gateway、api-system服务。
接着通过调用我们gateway网关服务(端口9092),进行请求转发到auth-service认证服务中心,去获取token,这里通过对数据配置回获取不同管理员权限,
- 使用密码模式来获取令牌,访问地址:http://localhost:9202/auth/oauth/token
 
- 在通过获取的access_token 请求api业务接口获取数据
Demo地址有需要的小伙伴可以down下来看看 gitee.com/Lxlxx/erp-c…