162 Star 484 Fork 177

小林攻城狮 / dp-passport

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

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:基础示例

系统结构

image

单点登录接入方法

  1. maven依赖
<dependency>
    <groupId>net.chenlin</groupId>
    <artifactId>dp-passport-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
  1. 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
  1. ids-access-policy.xml配置(匿名访问路径地址,可扩展其他策略)
<?xml version="1.0" encoding="utf-8"?>
<access-policy>

    <!-- 1.默认访问策略:没有配置在当前配置文件的URL,采用的默认访问策略
            ANON_ACCESS:不需要提供登录信息访问,request也无法获取用户信息
            AUTH_ACCESS:必须登录后访问,request可获取用户信息
            ROUTER_ACCESS:路由访问,登录时request可获取用户信息,不登录时也可以获取用户信息,此时为空
         2.策略优先级:ANON_ACCESS > AUTH_ACCESS > ROUTER_ACCESS
         3.地址映射:url-pattern支持ant风格地址匹配规则
     -->
    <default-access-policy>AUTH_ACCESS</default-access-policy>

    <!-- 匿名访问:不经过 passport-filter 处理,一般为静态资源,不需要获取用户信息请求地址 -->
    <anon-access>
        <url-pattern>/**/*.css</url-pattern>
        <url-pattern>/**/*.js</url-pattern>
        <url-pattern>/**/*.jpg</url-pattern>
        <url-pattern>/**/*.ico</url-pattern>
        <url-pattern>/**/test/anonAccess</url-pattern>
    </anon-access>

    <!-- 授权访问:必须登陆后才能访问 -->
    <auth-access>
        <url-pattern>/**/test/authAccess</url-pattern>
    </auth-access>

    <!-- 路由访问:不强制用户登录访问,登录状态下request可获取用户信息,非登录状态获取用户信息为空 -->
    <router-access>
        <url-pattern>/**/test/routerAccess</url-pattern>
    </router-access>

</access-policy>

客户端功能

  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 您已被强制退出

About

基于SpringBoot2.0的单点登录系统,同时支持web和app不同类型终端登录;支持不同顶级域名接入;采用一次性ticket授权模式防止攻击;密码传输使用RSA非对称加密,更安全;并可在不同类型终端灵活切换;业务系统无侵入接入,只需要增加passport依赖和配置项即可;支持多种访问策略配置适应不同场景;支持ant风格匿名访问配置;客户端支持接入系统登出,登录状态校验(web端支持跨域)。 spread retract
Cancel

Releases

No release

dp-passport

Contributors

All

Activities

load more
can not load any more
Java
1
https://gitee.com/dp_group/dp-passport.git
git@gitee.com:dp_group/dp-passport.git
dp_group
dp-passport
dp-passport
master

Search

102255 3a0e046c 1850385 102255 7aaa926c 1850385