1 Star 0 Fork 192

宝气菩提 / dp-passport

forked from 小林攻城狮 / dp-passport 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

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群:553461392【已满】,钉钉群号: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 您已被强制退出
The MIT License (MIT) Copyright (c) 2018 小林攻城狮 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

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

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/beilulu/dp-passport.git
git@gitee.com:beilulu/dp-passport.git
beilulu
dp-passport
dp-passport
master

搜索帮助