首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 專案間免登入關聯實現:單點登入 (SSO) 架構指南

     編輯:程式設計綜合問答

需求分析

多個 Java 專案需實現「專案關聯、免登入跳轉、共享登入狀態」,屬經典 單點登入 (Single Sign-On, SSO) 場景。

核心實現方案

方案一:CAS (Central Authentication Service) —— 標準企業級 SSO

  • 獨立部署 CAS Server 統一認證。
  • 各專案整合 CAS Client,重導向至 CAS 登入頁。
  • 登入成功獲取 Ticket,驗證後建立本地 Session。
  • 優點:成熟、支援單點登出、代理認證;缺點:部署較重。

方案二:共享 Session (Redis + Cookie) —— 輕量級內部系統

  1. 所有專案統一 domain (如 .example.com) 並設定 Cookie: JSESSIONID 作用域為根域名。
  2. Session 資料集中存放於 Redis,各專案以相同 sessionId 讀寫。
  3. Spring Session 提供開箱即用整合:@EnableRedisHttpSession。

方案三:JWT (JSON Web Token) 無狀態認證 —— 微服務友善

  • 認證服務簽發 JWT (含 userId、角色、過期時間),前端儲存於 LocalStorage/Cookie。
  • 各專案攔截器驗證 JWT 簽名與過期,解析用戶身份,無需共享 Session 儲存。
  • 優點:水平擴展容易、跨域支援佳;缺點:無法主動撤銷 (需黑名單機制)。

快速落地建議 (共享 Session 版)

# 1. 共同依賴
implementation 'org.springframework.session:spring-session-data-redis'

# 2. 配置 application.yml
spring:
  session:
    store-type: redis
    redis:
      namespace: myapp:session
  redis:
    host: redis-host
    port: 6379

# 3. 啟用
@EnableRedisHttpSession
@SpringBootApplication
public class App { ... }

# 4. Cookie 設定 (同域名下自動共享)
server.servlet.session.cookie.domain=.example.com
server.servlet.session.cookie.path=/

參考資源

詳細實作可參考:Java 專案 SSO 實戰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved