天天看點

access突然需要登入_dp-PASSPORT基于SpringBoot2.0的單點登入系統

基于SpringBoot2.0的單點登入系統,同時支援web和app不同類型終端登入;支援不同頂級域名接入;采用一次性ticket授權模式防止攻擊;密碼傳輸使用RSA非對稱加密,更安全;并可在不同類型終端靈活切換;業務系統無侵入接入,隻需要增加passport依賴和配置項即可;支援多種通路政策配置适應不同場景;支援ant風格匿名通路配置;用戶端支援接入系統登出,登入狀态校驗(web端支援跨域)。

access突然需要登入_dp-PASSPORT基于SpringBoot2.0的單點登入系統

項目介紹

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

系統結構

access突然需要登入_dp-PASSPORT基于SpringBoot2.0的單點登入系統

單點登入接入方法

  1. maven依賴
net.chenlin dp-passport-client 0.0.1-SNAPSHOT
           
  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"?>  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中
  1. 校驗登入狀态
  • 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
  1. 資料庫腳本見doc目錄[dp-emp.sql],使用者表隻是示例,可根據需要二次開發
  2. 接口測試腳本見doc目錄[passport登入測試計劃.jmx]
  3. passport預設登入使用者:admin,密碼:1

服務端配置

  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端