# pine-security **Repository Path**: XYJXUST/pine-security ## Basic Information - **Project Name**: pine-security - **Description**: 一个基于springboot的安全框架,以oauth2为基础的认证,包含认证和权限功能,也支持单点登陆。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2019-09-05 - **Last Updated**: 2023-12-04 ## Categories & Tags **Categories**: security-dev **Tags**: None ## README # pine-security ### **简介** 一个基于springboot的安全框架,以oauth2为基础,包含授权和认证功能,也支持单点登陆。目前spring security配置繁琐,源码难以理解,shiro不是为前后端分离而生,需要改造来适应。所以想自己开发一个配置简单的,功能完全的安全框架。 #### **说明** 1. 参照spring security设计,以spring boot 2.1.3技术栈,没有封装,支持多种登陆方式,用户名密码、验证码、手机号登陆、第三方登陆等,易于扩展 2. 权限是参照shiro的设计,包含支持验证端口、权限码、角色、区域等,配置可以yml配置,也可以来源于自己的数据源,支持动态权限验证、集中认证、单机认证 3. 配置简单,一个注解启动授权服务(@EnableAuthorizationServer),一个注解启动单点登陆(@EnableOAuth2SSO),一个注解启动权限服务(@EnableMethodSecurity),包含对于feign调用的处理 4. 跨域无状态,随意横向扩展,服务高可用 #### 使用说明 1. 授权服务器启动 - 添加启动注解@EnableAuthorizationServer - 实现UsernamePasswordAuthenticator > @Component > @Primary > @Slf4j > public class UsernamePasswordAuthenticatorImpl extends UsernamePasswordAuthenticator { > > @Autowired > private UserInfoManager userInfoManager; > @Override > public UserDetails authenticate(IntegrationLoginRequest integrationAuthentication) { > return userInfoManager.getUserByUsername(integrationAuthentication.getUsername()); > } > } - feign的oauth环境下调用没有token问题,已添加配置,在配置中添加如下配置即可 > pine: > oauth: > sso: #单点登陆配置 > client_id: browser > client_secret: ui > access_token_uri: http://auth.admin1.com:10010/oauth/token > feign: > oauth: > enabled: true 2. 启动单点登陆服务 - 添加启动注解@EnableOAuth2SSO - 添加如下配置 > pine: > oauth: > sso: #单点登陆配置 > client_id: browser > client_secret: ui > access_token_uri: http://auth.admin1.com:10010/oauth/token > access_token_validate_uri: http://auth.admin1.com:10010/oauth/check_token > user_authorization_uri: http://auth.admin1.com:10010/oauth/authorize 3. 启动权限服务 - 添加启动注解@EnableMethodSecurity - 如果是配置文件进行权限配置 > perims(xxx) 为资源权限 role(xxx)为角色权限 port(xxx)为端口权限 anon为白名单 scope为区域权限(可以根据这个配置oauth2中的scope权限) #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### Thanks 谢谢开源的产品,此项目参照了许多的开源项目