# dp-passport
**Repository Path**: ericcode/dp-passport
## Basic Information
- **Project Name**: dp-passport
- **Description**: 基于SpringBoot2.0的单点登录系统,同时支持web和app不同类型终端登录;支持不同顶级域名接入;采用一次性ticket授权模式防止攻击;密码传输使用RSA非对称加密,更安全;并可在不同类型终端灵活切换;业务系统无侵入接入,只需要增加passport依赖和配置项即可;支持多种访问策略配置适应不同场景;支持ant风格匿名访问配置;客户端支持接入系统登出,登录状态校验(web端支持跨域)。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://dp_group.gitee.io/dp-homepage/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 187
- **Created**: 2019-05-13
- **Last Updated**: 2020-12-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# dp-PASSPORT
#### 项目介绍
基于SpringBoot的单点登录系统,具有完整的SSO解决方案,包括以下特点:
1. 基于cookie存储登录授权信息,当禁用cookie时有友好的提示;
2. 同时支持web和app不同类型终端登录,并支持不同顶级域名的单点登录;
3. 采用一次性ticket授权模式,提高安全性,防止重放攻击;
4. 密码采用公钥加密,私钥加密,增强安全性;
5. 可在不同类型终端灵活切换,统一配置,适应不同场景的授权模式;
6. 业务系统无侵入接入,只需要增加passport依赖和配置项即可;
7. 支持多种访问策略配置适应不同场景;
8. 支持ant风格匿名访问配置;
9. 客户端支持接入系统登出,登录状态校验(web端支持跨域);
10. 代码注释完整,分层规范,扩展性好;100%通过阿里巴巴代码检测,便于二次开发。
#### 项目结构
1. dp-passport:聚合工程
2. dp-passport-common:公用基础模块
3. dp-passport-server:认证服务模块
4. dp-passport-client:客户端模块
5. dp-passport-admin:后台管理模块
6. dp-passport-samples:基础示例
#### 系统结构

#### 单点登录接入方法
1. maven依赖
```
net.chenlin
dp-passport-client
0.0.1-SNAPSHOT
```
2. application.yml配置(配置项说明见 客户端配置 )
```
ids:
client:
client-type: web
app-code: passportTest
auth-id-cookie-name: dpAuthId
server-name: http://samplesit.chenlintech.com:9090/sample
auth-server-url: http://passportsit.chenlintech.com:8080/ids
cookie-domain: chenlintech.com
```
3. ids-access-policy.xml配置(匿名访问路径地址,可扩展其他策略)
```
AUTH_ACCESS
/**/*.css
/**/*.js
/**/*.jpg
/**/*.ico
/**/test/anonAccess
/**/test/authAccess
/**/test/routerAccess
```
#### 客户端功能
1. 登出
- web端:[server-name]/logout,重定向server登出地址
- app端:[server-name]/logout,参数[auth-id-cookie-name]包含在header或param中
2. 校验登录状态
- web端:[server-name]/authStatus,返回jsonp
- app端:[server-name]/authStatus,参数[auth-id-cookie-name]包含在header或param中
#### 使用说明
1. 开发环境:jdk,maven,mysql,redis,idea,jmeter
2. 修改host
- 127.0.0.1 passportsit.chenlintech.com
- 127.0.0.1 samplesit.chenlin.com
3. 数据库脚本见doc目录[dp-emp.sql],用户表只是示例,可根据需要二次开发
4. 接口测试脚本见doc目录[passport登录测试计划.jmx]
5. passport默认登录用户:admin,密码:1
#### 交流反馈
- 交流QQ群:【已满】,钉钉群号:23119937
- 如果对项目感兴趣,请Watch、Star项目,后期会不定时发布更新
#### 服务端配置
1. auth-id-cookie-name:授权码名称,cookie名称或token名称
2. welcome-page:欢迎页面,当登陆后重定向地址为空时,跳转该地址
3. cookie-domain:cookie域,顶级域名
4. redis-host-and-port:redis地址,格式为 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381
#### 客户端配置
1. client-type:客户端类型,配置为web或app,默认缺省为web
2. app-code:接入应用标识,必填
3. auth-id-cookie-name:授权码名称,cookie名称或token名称,与服务端一致
4. server-name:接入系统首页,客户端为app时可不配置
5. auth-server-url:认证服务器地址,必填
6. cookie-domain:cookie域,web端顶级域名,客户端为app时可不配置
7. Ant风格匿名访问地址配置:示例见dp-samples工程resources目录[ids-access-policy.xml]
#### SessionData:登陆后,从request获取sessionData属性
1. userId:用户id,获取用户唯一标识
2. userAlias:用户登录名
3. isLogin:是否登录:1:登录状态,0:未登录,预留强制退出字段
4. userEnable:用户可用状态:1:正常,0:禁用
5. rememberMe:是否记住我,true保留登录7天,false默认30分钟
6. loginType:登录类型:1:web端,2:app端
#### 错误码定义
| 错误码 | 提示信息 |
| :------: | :------ |
| 0000 | 处理成功 |
| 1000 | 业务异常 |
| 9999 | 系统异常 |
| 4000 | 账户已登录 |
| 4001 | 账户未登录 |
| 4002 | 用户名不能为空 |
| 4003 | 密码不能为空 |
| 4004 | 当前用户不存在 |
| 4005 | 密码错误 |
| 4006 | 账户已被锁定 |
| 4007 | 您已被强制退出 |