java用戶注冊登錄系統,java單點登錄統一認證,JEECG 集成KiSSO單點登錄實現統一身份認證

 2023-11-19 阅读 36 评论 0

摘要:JEECG 集成KiSSO單點登錄實現統一身份認證JEECG 如何為其他第三方系統實現統一身份認證服務,實現單點登錄?第三方系統如何對接呢?今天為大家揭開這層面紗,讓大家了解實質,使用它更快速的構建大家需要的業務java用戶注冊登錄系統、一、KISS

JEECG 集成KiSSO單點登錄實現統一身份認證

JEECG 如何為其他第三方系統實現統一身份認證服務,實現單點登錄?

第三方系統如何對接呢?

今天為大家揭開這層面紗,讓大家了解實質,使用它更快速的構建大家需要的業務

java用戶注冊登錄系統、一、KISSO單點登錄介紹

kisso 采用的是加密會話 cookie 機制實現單點登錄 SSO 服務,具備“無狀態”、“分散驗 證” 等特性。

1、session 存放在服務器端,cookie 存放在客戶端,存在 2 種狀態:“ 第一種:持久 cookie 具有時效性,以文件的形式存放在客戶機硬盤中, 時間一到生命周期結束自動被刪除。第二種:臨時 cookie 又叫會話 cookie 放在瀏覽器 內存中,瀏覽器關閉生命周期結束自動失效 ”。

2、單純不做任何改變而言 session 更安全,如果 cookie 采取各種安全保護措施,此時的 cookie 一樣安全。

3、cookie 輕松實現分布式服務部署,單點登錄跨域訪問等問題,換成 session 需要處理 session 復制及各種問題實現困難。

java實現登陸。二、JEECG集成KiSSO實現統一身份認證服務

JEECG系統作為服務端,實現統一身份認證服務,為其他第三方系統提供統一登錄入口,共享用戶資源,實現同一個用戶名和密碼登錄多個系統。

那JEECG如何實現的服務呢?下面切入正題。

1、服務端集成KISSO

(1) JEECG 工程 Maven依賴相關的jar

單點登錄。com.baomidou

kisso

3.6.11

com.alibaba

fastjson

前端門戶集成,1.2.15

(2)服務端項目配置文件。kisso啟動配置有兩種配置方式:spring方式初始化、Servlet方式初始化。根據不同的工程結構選擇合適的配置方式,JEECG使用的是springMVC框架,我這里選擇使用spring方式初始化方式。

下面兩種初始化方式如下:

第一種:spring方式初始化方式

第二種:Servlet方式初始化

php單點登錄,kissoConfigLocation

classpath:sso.properties

com.baomidou.kisso.web.KissoConfigListener

這兩種方式,都會加載一個屬性配置文件sso.properties該文件放到classpath下

sso.properties 配置文件內容:

#單點登錄信息加密密鑰

java單點登錄跨域。復制代碼

至此,服務端集成完成,sso.properties 需要注意的是:sso.secretkey單點登錄信息加密密鑰,此秘鑰在登錄完成后會把用戶的信息通過此秘鑰進行加密,保存到cookie中,為了安全不要泄露此密鑰;sso.cookie.domain是單點登錄域名配置,配置一級域名。JEECG服務端系統和第三方對接的客戶端系統需要在同一個域名下,跨域的問題暫不考慮。

本地調試時服務的訪問一定要使用域名,系統host配置域名test.com即可。

2、JEECG統一身份認證服務代碼實現原理

JEECG系統集成配置完成,那么怎么實現的統一登錄服務呢?

集成登陸。JEECG系統原有的登錄時不能給第三方系統提供統一登錄服務,為了不印象原有的系統業務,我們需要另外實現一個登錄入口代碼如下:(http://sso.test.com:8080/jeecg/toLogin.do)

/**

* 單點登錄

* @author zhoujf

*

1單點登錄?*/

@Controller

@RequestMapping("/")

public class SSOController extends BaseController{

private Logger log = Logger.getLogger(SSOController.class);

java單點登錄解決方案?@RequestMapping(value = "toLogin")

public String toLogin(HttpServletRequest request) {

String returnURL = request.getParameter("ReturnURL");

log.info("SSO 資源路徑returnURL:"+returnURL);

request.setAttribute("ReturnURL", returnURL);

開源單點登錄,return "login/login";

}

}

第三方客戶端集成KISSO后如果嚴重沒有登錄,則會跳轉到這個地址進行登錄,在跳轉這個地址時會帶一個參數ReturnURL,該參數是第三方系統當時訪問的請求地址,JEECG服務端登錄后會再回跳到這個地址。以上代碼段在進入登錄頁面后把回跳地址帶入登錄頁面,以便登錄后回跳該地址

那么服務端,登錄回跳怎么實現的呢?下面在登錄邏輯中增加如下代碼即可實現:

java單點登錄如何實現。//-----------------------單點登錄-------------------------------------------------

/*

* 單點登錄 - 登錄需要跳轉登錄前頁面,自己處理 ReturnURL 使用

* HttpUtil.decodeURL(xx) 解碼后重定向

*/

單點登錄和統一認證、String returnURL = (String)request.getSession().getAttribute("ReturnURL");

log.info("login 資源路徑returnURL:"+returnURL);

if(StringUtils.isNotEmpty(returnURL)){

SSOToken st = new SSOToken(request);

st.setId(UUID.randomUUID().getMostSignificantBits());

單點登錄流程。st.setUid(user.getUserName());

st.setType(1);

//request.setAttribute(SSOConfig.SSO_COOKIE_MAXAGE, maxAge);

// 可以動態設置 Cookie maxAge 超時時間 ,優先于配置文件的設置,無該參數 - 默認讀取配置文件數據 。

//??maxAge 定義:-1 瀏覽器關閉時自動刪除 0 立即刪除 120 表示Cookie有效期2分鐘(以秒為單位)

//request.setAttribute(SSOConfig.SSO_COOKIE_MAXAGE, 60);

SSOHelper.setSSOCookie(request, response, st, true);

returnURL = HttpUtil.decodeURL(returnURL);

log.info("login 資源路徑returnURL:"+returnURL);

request.getSession().removeAttribute("ReturnURL");

try {

response.sendRedirect(returnURL);

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

//------------------------單點登錄----------------------------------------------

以上服務端統一登錄服務就完成了!!!!

三、第三方系統對接JEECG統一認證服務

1、第三方系統KISSO集成

(1) 客戶端 工程 Maven依賴相關的jar

com.baomidou

kisso

3.6.11

com.alibaba

fastjson

1.2.15

(2)第三方項目配置文件。kisso初始化以及登錄驗證攔截器配置有兩種配置方式:spring方式初始化、Servlet方式初始化。根據不同的工程結構選擇合適的配置方式,我這里第三方系統使用的也是springMVC框架,選擇使用spring方式初始化方式。

下面兩種初始化方式如下:

第一種:spring方式初始化方式

第二種:Servlet方式初始化

kissoConfigLocation

classpath:sso.properties

com.baomidou.kisso.web.KissoConfigListener

SSOFilter

com.baomidou.kisso.web.filter.SSOFilter

over.url

/index.jsp

SSOFilter

/*

這兩種方式,都會加載一個屬性配置文件sso.properties該文件放到classpath下

sso.properties 配置文件內容:

#單點登錄信息加密密鑰

sso.secretkey=Kisso4springMvc80mAS

#cookie名稱

sso.cookie.name=uid

#cookie單點服務器登錄域名(本地測試需要host配置域名test.com,不能使用ip)

sso.cookie.domain=.test.com

#服務端登錄地址

sso.login.url=http://sso.test.com:8080/jeecg/toLogin.do

sso.properties 需要注意的是:sso.secretkey單點登錄信息加密密鑰,和服務端配置保持一致;

sso.cookie.domain是單點登錄域名配置,配置一級域名。和服務端配置保持一致;跨域的問題暫不考慮。

sso.login.url? ?是服務端實現的統一登錄服務入口地址

本地調試時服務的訪問一定要使用域名,系統host配置域名test.com即可。

以上 第三方系統對接統一認證服務完成!!

2、測試驗證方法

(1)啟動JEECG服務端項目

(2)啟動第三方系統

(3)找一個第三方系統的請求測試

例如:http://sso.test.com/jeecg-p3-web/system/back.do?index

請求后,未登錄的情況下,跳轉到JEECG統一認證系統進行登錄,地址如下:

http://sso.test.com:8080/jeecg/toLogin.do?ReturnURL=http%253A%252F%252Fsso.test.com%252Fjeecg-p3-web%252Fsystem%252Fback.do%253Findex

43ca8553c8d77e5889a1875c29f7a6d4.png?

登錄之后,回跳到地址?http://sso.test.com/jeecg-p3-web/system/back.do?index

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/185791.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息