999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CAS的單點登錄系統(tǒng)的研究與實現(xiàn)

2016-12-15 02:47:20楊旭東
軟件 2016年11期
關鍵詞:數(shù)據(jù)庫用戶信息

趙 晉,楊旭東

(北京郵電大學 計算機學院,北京 100876)

基于CAS的單點登錄系統(tǒng)的研究與實現(xiàn)

趙 晉,楊旭東

(北京郵電大學 計算機學院,北京 100876)

隨著互聯(lián)網(wǎng)的發(fā)展,用戶經(jīng)常需要訪問不同系統(tǒng),這就導致用戶需要頻繁登錄。單點登錄就是為解決上述問題而提出的一種技術,它可以使用戶只登錄某個系統(tǒng)一次即可訪問所有相關的應用系統(tǒng)。本文在分析了CAS協(xié)議的基本原理后,實現(xiàn)了基于CAS的單點登錄系統(tǒng),為CAS服務器端添加了訪問權限控制、緩存層和基于Netty的用戶管理系統(tǒng)的功能。

軟件工程;單點登錄;CAS;統(tǒng)一認證

本文著錄格式:趙晉,楊旭東. 基于CAS的單點登錄系統(tǒng)的研究與實現(xiàn)[J]. 軟件,2016,37(11):118-124

0 引言

隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡中提供服務的增多,人們?nèi)粘I钏枰男畔①Y源也隨之增多。在這種條件下,用戶經(jīng)常需要訪問一個內(nèi)部網(wǎng)絡中的多種不同子系統(tǒng)中的資源,由于不同系統(tǒng)的軟硬件平臺在初期設計時沒有統(tǒng)一的訪問標準和安全策略,導致用戶在訪問各個子系統(tǒng)時都需要進行獨立的身份認證。這就要求用戶需要記住自己在不同系統(tǒng)的身份標志,例如用戶名和訪問密碼等,并且當需要訪問多個系統(tǒng)時,需要反復驗證用戶身份,這無疑會對用戶體驗造成影響,并且降低了各系統(tǒng)的易用性。為了應對以上問題,產(chǎn)生了單點登錄(Single sign-on,簡稱為SSO)系統(tǒng)。

單點登錄的定義是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)[1]。統(tǒng)一認證是單點登錄的一種解決方案,統(tǒng)一認證的主要思路就是由唯一一個統(tǒng)一認證系統(tǒng)接管各個不同系統(tǒng)的身份認證模塊,各應用系統(tǒng)只需要通過統(tǒng)一認證系統(tǒng)所系統(tǒng)的信息即可實現(xiàn)用戶身份的驗證[2]。

JASIG-CAS本身為Yale大學開發(fā),后轉入JASIG項目。它是一個單點登錄系統(tǒng)的框架,它基于統(tǒng)一認證,并且支持跨域訪問。同時本身即可作為一個獨立的WEB應用程序運行使用,內(nèi)部使用Spring Web Flow和Spring MVC框架實現(xiàn)。它包括一個JAVA開源服務器組件,并提供多種官方和非官方的客戶端組件,官方的客戶端組件包括JAVA、.NET、PHP和Apache。并且CAS支持多種協(xié)議和存儲后端,比如自己獨有的CAS協(xié)議、OpenID協(xié)議、SAML協(xié)議、OAuth協(xié)議等,存儲后端有數(shù)據(jù)庫、LDAP、Active Directory等。并且CAS在全球有很多大學和企業(yè)在使用,認可度較高。

本文使用CAS框架來實現(xiàn)單點登錄系統(tǒng),并完善了單點登錄系統(tǒng),使其增加了粗細兩種用戶訪問

控制機制、緩存層和基于Netty 的用戶管理系統(tǒng),用戶管理系統(tǒng)包含注冊服務器、管理服務器和基于Netty的WebSocket服務器,使得管理者無需刷新用戶管理系統(tǒng)頁面即可獲取到用戶信息。

粗粒度訪問控制機制使用Mybatis框架實現(xiàn),細粒度訪問控制機制使用shiro實現(xiàn),緩存層使用了Redis數(shù)據(jù)庫,用戶管理系統(tǒng)使用了Netty作為WebSocket服務器,用于轉發(fā)和推送消息,數(shù)據(jù)庫使用了MySQL。

1 本文采用的方案

先介紹一下CAS框架的主要協(xié)議,即CAS協(xié)議。

CAS協(xié)議是JASIG-CAS特有的基于票據(jù)的協(xié)議(ticket-based protocol),它實現(xiàn)簡單而且功能強大。它涉及到一個或多個CAS客戶端和一個CAS服務器。其中CAS服務器負責驗證用戶身份并授予訪問權限。CAS客戶端的作用是保護Web應用并從CAS服務器獲取已授予訪問權限的用戶身份。

TGT(Ticket Granting Ticket)票據(jù)被存儲于名為CASTGC的cookie中,它是已通過CAS服務器身份認證的用戶標志。ST (Service Ticket) 票據(jù)通過HTTPS協(xié)議的Get方式傳輸,即URL傳參,它是用戶訪問特定Web應用的許可標志 。

CAS協(xié)議實現(xiàn)原理如下圖1所示:

用戶第一次訪問應用1時的步驟:

1. 用戶通過瀏覽器向受到CAS客戶端保護的Web應用1發(fā)出請求。

2. CAS客戶端檢測到這次訪問還未被授權,即沒有在cookie中檢測到session id,之后將此次請求轉發(fā)到CAS服務器。

圖1 用戶首次訪問應用1的過程Fig.1 The process of user’s first visit of application 1.

3. CAS服務器檢測到用戶cookie中沒有TGT票據(jù)信息,所以向用戶瀏覽器返回登錄界面。

4. 用戶輸入身份信息,并利用POST方式將信息發(fā)送到CAS服務器。

5. CAS服務器驗證身份信息,驗證通過后,創(chuàng)建TGT票據(jù)并將TGT票據(jù)保存到用戶cookie中。之后創(chuàng)建ST票據(jù),并將ST票據(jù)信息寫入到用戶瀏覽器即將轉發(fā)的URL的參數(shù)中。該URL指向之前用戶請求訪問的受CAS客戶端保護的Web應用1。

6. CAS客戶端向CAS服務器發(fā)出校驗ST票據(jù)的請求。

7. CAS服務器驗證ST票據(jù)信息成功,之后創(chuàng)建并返回一個包含成功信息和其他所需參數(shù)的XML文檔給受CAS客戶端保護的Web應用1。

8. CAS客戶端建立session,并將session id寫入到用戶cookie中。最后將需要轉發(fā)的去除了ST票據(jù)信息的URL返回給用戶瀏覽器。該URL即為用戶最初請求的URL。

圖2 用戶再次訪問應用1的過程Fig.2 The process of user’s second visit of application 1.

圖3 用戶訪問應用2時的過程Fig.3 The process of user’s first visit of application 2

9. 用戶瀏覽器再次請求訪問Web應用1。

10. CAS客戶端在cookie中檢測到session id,允許訪問。

11. Web應用1返回資源給用戶瀏覽器,如圖2所示。

用戶再次訪問應用1時的步驟:

1. 用戶通過瀏覽器向受到CAS客戶端保護的Web應用1發(fā)出請求。

2. CAS客戶端在cookie中檢測到session id,允許訪問。

3. Web應用1返回資源給用戶瀏覽器,如圖3所示。

用戶接下來訪問應用2時的步驟:

1. 用戶通過瀏覽器向受到CAS客戶端保護的Web應用2發(fā)出請求。

2. CAS客戶端檢測到這次訪問還未被授權,即沒有在cookie中檢測到session id,之后將此次請求轉發(fā)到CAS服務器。

3. CAS服務器在用戶cookie中發(fā)現(xiàn)TGT票據(jù)信息,驗證TGT信息成功后,創(chuàng)建ST票據(jù),并將ST票據(jù)信息寫入到用戶瀏覽器即將轉發(fā)的URL的參數(shù)中。該URL指向之前用戶請求訪問的受CAS客戶端保護的Web應用2。

4. CAS客戶端向CAS服務器發(fā)出校驗ST票據(jù)的請求。

5. CAS服務器驗證ST票據(jù)信息成功,之后創(chuàng)建并返回一個包含成功信息和其他所需參數(shù)的XML文檔給受CAS客戶端保護的Web應用2。

6. CAS客戶端建立session,并將session id寫入到用戶cookie中。最后將需要轉發(fā)的去除了ST票據(jù)信息的URL返回給用戶瀏覽器。該URL即為用戶最初請求的URL。

7. 用戶瀏覽器再次請求訪問Web應用2。

8. CAS客戶端在cookie中檢測到session id,允許訪問。

9. Web應用2返回資源給用戶瀏覽器。

由于CAS框架本身不具備權限控制和用戶管理的功能,同時在訪問量很大,并發(fā)量很高的情況下,用戶很可能在某個時間內(nèi)連續(xù)登陸,這會對數(shù)據(jù)庫造成很大的壓力,可以添加一個緩存層來緩解數(shù)據(jù)庫的壓力。

本文采用Redis對單點登錄系統(tǒng)進行擴充,添加緩存層。同時修改CAS協(xié)議的源碼,在上述CAS協(xié)議的基礎上,對協(xié)議進行擴展,在生成ST票據(jù)?前添加粗粒度的訪問權限控制的功能,即是否有權訪問指定網(wǎng)站,同時對于每個網(wǎng)站內(nèi)的Web資源,利用Shiro添加了細粒度的訪問權限控制。最后,用戶管理系統(tǒng)使用Netty作為中間的WebSocket服務器,其作用是接收注冊服務器的信息并轉發(fā)到用戶管理系統(tǒng)服務器上。

單點登錄系統(tǒng)的服務器端和客戶端均在Ubuntu 14.04 Kylin系統(tǒng)下開發(fā),服務器端使用CAS框架實現(xiàn),版本為4.1.1,使用了MyBatis框架來改進CAS服務器,為其添加用戶控制訪問的功能,存儲后端使用數(shù)據(jù)庫驗證用戶信息,數(shù)據(jù)庫使用 MySQL5.6,并利用Redis數(shù)據(jù)庫為服務器添加了緩存層??蛻舳耸褂昧薙hiro框架,并且Shiro集成了CAS客戶端。注冊服務器和用戶管理服務器使用了SSM(SpringMVC+ Spring+Mybatis)框架實現(xiàn)就,MVC的意思是模型-視圖-控制器,它是一種設計模式也是一種設計典范[3]。1WebSocket服務器使用了Netty實現(xiàn)。

2 CAS單點登錄系統(tǒng)的實現(xiàn)與改進

2.1 用戶訪問控制機制與Shiro

一般而言,用戶訪問控制機制包含以下四點:

1. 身份認證

2. 授權

3. 確定用戶權限

4. 執(zhí)行訪問

用戶訪問控制機制有兩個關鍵的概念。即客體(object)和主體(Subject)。

客體是一種信息實體,它們蘊含或接收信息,客體在Web應用系統(tǒng)中通常指欲訪問的URL。主體也是一種實體,它能夠引起信息在客體間流動,主體在Web應用系統(tǒng)中通常指用戶。

自主訪問控制(Discretionary Access Control, DAC)是最常用的一類訪問控制機制,是用來判斷一個主體是否有權訪問客體的一種約束機制。在這種機制下,一個主體(一般在Web應用系統(tǒng)中指管理員)可以自主的說明其資源可以被那些其他主體(一般在Web應用系統(tǒng)中指用戶)以何種訪問權限進行訪問。實現(xiàn)的方法有基于行或者基于列的兩種模式?;谛械淖灾髟L問控制機制在每個主體上都提供一個該主體可訪問的客體的明細表。而基于列的自主訪問機制,在每個客體上都提供一個可訪問它的主體的明細表[4]。

Shiro的內(nèi)部實現(xiàn)原理是基于自主訪問控制機

制,同時它的機制是基于列的形式。即需要對每一個客體指定可訪問它們的主體。

2.2 用戶訪問控制的實現(xiàn)

項目所采取的用戶訪問控制并不是完全依賴于Shiro,其中對應用系統(tǒng)即CAS客戶端Web應用的訪問控制是由修改過后的CAS服務器實現(xiàn)的,即粗粒度的訪問控制,而在CAS客戶端內(nèi)的更細粒度的訪問控制是由Shiro實現(xiàn)。這樣做的原因是因為:根據(jù)CAS協(xié)議原理,在用戶每次訪問CAS客戶端所保護的Web應用時,若Session中無數(shù)據(jù),則需要跳轉到CAS服務器,經(jīng)過一系列操作后才能再次訪問Web應用,若由Shiro在客戶端實現(xiàn)訪問控制功能,則需要在CAS服務器的一系列操作后進行,之后若發(fā)現(xiàn)用戶無訪問權限,則上述在CAS服務器進行的操作都是沒有意義的。這就浪費了大量的資源和時間。

所以本項目在CAS服務器端修改源碼,在生成ST票據(jù)前讀取權限數(shù)據(jù),判斷是否有權訪問,由CAS服務器來處理訪問控制。如下圖5所示:

圖5 訪問控制流程圖1Fig.5 flow-process diagram1 of Access Control

首先用戶訪問目標應用系統(tǒng),由于目標應用系統(tǒng)受到CAS客戶端的保護,所以用戶將攜回調(diào)地址跳轉到CAS服務器,CAS服務器保存回調(diào)地址,并驗證用戶身份,若驗證失敗則禁止用戶訪問,若驗證成功則存儲用戶名到服務器端Session中,之后再在另外一個函數(shù)中從Session中讀取出用戶名,從數(shù)據(jù)庫中讀取出相應權限信息,最后由之前保存的回調(diào)地址驗證是否有權限登錄,若無權限則返回,有權限則創(chuàng)建ST。

細粒度的訪問權限控制由客戶端的Shiro實現(xiàn),即對Web應用內(nèi)的某些特定資源進行訪問權限控制。該部分訪問流程如圖6所示:

首先用戶訪問受Shiro及CAS服務器保護的客戶端Web系統(tǒng)的指定Web資源,若客戶端不存在用戶信息需要向CAS服務器請求用戶信息,若存在用戶信息則從數(shù)據(jù)庫中讀取權限信息,之后若有權訪問則允許訪問,無權訪問則禁止訪問。

2.3 Redis緩存層的實現(xiàn)

CAS緩存層設計方面可以利用現(xiàn)在非常流行的NoSQL數(shù)據(jù)庫Redis來實現(xiàn)。它是一個基于key-value的存儲系統(tǒng),并使用內(nèi)存存儲和讀取數(shù)據(jù),并不是傳統(tǒng)意義的關系型數(shù)據(jù)庫。與傳統(tǒng)的關系型數(shù)據(jù)庫相比,它具備極高的讀取性能,所以利用它作為緩存層是非常好的選擇。Redis的置換算法將使用LRU

算法,即在數(shù)據(jù)庫已滿時添加新數(shù)據(jù),會將最近最少使用的數(shù)據(jù)淘汰。CAS存儲后端采用MySQL 5.6。

加入緩存層后的工作流程如圖7所示:

在用戶輸入用戶名和密碼后,瀏覽器將身份信息傳給CAS服務器。CAS服務器首先進行緩存層驗證,即讀取Redis數(shù)據(jù)庫中的用戶信息,若緩存命中且與用戶輸入相符,則創(chuàng)建TGT。否則,則從MySQL數(shù)據(jù)庫讀取用戶信息,若存在且與用戶輸入相符則先將用戶身份信息寫入Redis之后創(chuàng)建TGT,若用戶信息不存在或與用戶輸入不服則返回驗證失敗。

圖6 訪問控制流程圖2Fig.6 flow-process diagram2 of Access Control

圖7 緩存層工作流程圖Fig.7 flow-process diagram of Cache layer

2.4 基于Netty的用戶管理系統(tǒng)的實現(xiàn)

用戶管理系統(tǒng)包含注冊服務器、基于Netty的WebSocket服務器和管理服務器。其中注冊服務器用于完成用戶注冊,管理服務器實現(xiàn)用戶管理。這部分的工作流程圖如圖8所示:

首先,用戶訪問注冊服務器,請求注冊,注冊服務器判斷用戶輸入的信息是否合法,若不合法返回注冊失敗,若合法則完成注冊,之后將數(shù)據(jù)主動推送給基于Netty的WebSocket服務器,WebSocket服務器接受到數(shù)據(jù)后,再將數(shù)據(jù)主動推送給用戶管理服務器,將用戶信息展示并持久化到數(shù)據(jù)庫中。

當管理員登錄系統(tǒng),系統(tǒng)首先從數(shù)據(jù)庫中讀取數(shù)據(jù),而后進行信息展示,等待接受WebSocket傳來的新的用戶信息,一旦有新用戶信息到來,利用Javascript修改頁面信息進行頁面展示,這樣做無需刷新頁面,管理員可以實時的獲取新用戶信息,并對用戶信息進行CRUD操作。

圖8 用戶管理系統(tǒng)工作流程圖Fig.8 flow-process diagram of User Administration

3 總結

本文在分析了CAS協(xié)議原理的基礎上,實現(xiàn)了一個基于CAS的單點登錄系統(tǒng),并對其進行了改進,增加了粗細兩種訪問權限控制、緩存層和基于Netty和WebSocket的用戶管理系統(tǒng)。粗的訪問權限控制由Mybatis框架修改CAS服務器端源碼實現(xiàn),緩存層由Redis實現(xiàn),用戶管理系統(tǒng)利用了基于Netty的WebSocket服務器實現(xiàn)數(shù)據(jù)的主動推送,使得管理員無需刷新頁面即可獲取新的信息。之后未來的工作主要集中在系統(tǒng)性能的提高和魯棒性的提高上。

[1] 郭成寶. 基于Liferay 門戶與Lotus Domino OA 單點登錄系統(tǒng)的實現(xiàn)[J]. 軟件, 2014, 35(1): 72-74.

[2] 潛昕, 羅沙白, 盧康權. 構建基于分布式SOA架構的統(tǒng)一身份認證體系[J]. 軟件, 2013, 34(1): 17-19[3]. 葛管庫.MVC模式下程序設計[J]. 軟件, 2013, 34(2): 49-51.

[3] 沈晴霓, 卿斯?jié)h. 操作系統(tǒng)安全設計[M]. 北京: 機械工業(yè)出版社, 2013.

[4] JASIG, CAS協(xié)議[OL]. https://apereo.github.io/cas/4.2.x/ protocol/CAS-Protocol.html.

[5] JASIG, CAS Protolcol[OL]. https://apereo.github.io/cas/4.2.x/ protocol/CAS-Protocol.html.

[6] 李俊. 一個基于JASIG-CAS改進的SSO模型及實現(xiàn)[D]. 四川: 電子科技大學, 2011.

[7] 蘇悅洪. 基于CAS協(xié)議的單點登錄系統(tǒng)的研究與改進[D].廣州: 華南理工大學, 2014.

A Research and Implementation of Single-Sign-On System based on CAS

ZHAO Jin YANG Xu-dong
(BeiJing University of Post and Telecommunications. Institute of Computer, BeiJing 100876)

With the development of the Internet,users often need to visit different systems,as a result,they need to login the systems frequently.Single-Sign-On(SSO) is a technology which can handle the problem above,users can lonin one system just once and then they can visit all relative systems without logging in again by using it.In this paper,after analyzing the basic of CAS protocol, SSO system based on CAS with the new functions of access control,cache layer and user administration is implemented.

Software engineering; Single-sign-on; CAS; Unified authentication

TP311.52

A

10.3969/j.issn.1003-6970.2016.11.026

趙晉(1990-),男,碩士研究生,計算機軟件。

楊旭東,教授,主要研究方向:互聯(lián)網(wǎng)技術。

猜你喜歡
數(shù)據(jù)庫用戶信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
如何獲取一億海外用戶
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 色一情一乱一伦一区二区三区小说| 动漫精品中文字幕无码| 国产91丝袜在线播放动漫 | 国产激情无码一区二区免费| 国产综合网站| 99r在线精品视频在线播放| 亚洲综合天堂网| 一级一级一片免费| 国产激爽大片在线播放| 日韩精品无码免费专网站| 毛片免费高清免费| 日韩午夜伦| 久久狠狠色噜噜狠狠狠狠97视色 | 色欲色欲久久综合网| 欧美另类第一页| 日韩小视频在线观看| 亚洲九九视频| 又猛又黄又爽无遮挡的视频网站| 在线国产毛片手机小视频| 日韩第八页| 日本不卡视频在线| www.91在线播放| 在线观看国产精品日本不卡网| 国产精品yjizz视频网一二区| 日韩免费无码人妻系列| 啊嗯不日本网站| 国产一区二区免费播放| 欧美激情视频在线观看一区| 亚洲欧美日韩中文字幕在线| 欧美日韩在线成人| 国产Av无码精品色午夜| 久久国产亚洲偷自| 日本午夜影院| 亚洲VA中文字幕| 成人在线第一页| 欧美日韩国产高清一区二区三区| 成人中文字幕在线| 日韩在线观看网站| 欧美精品H在线播放| 亚洲精品另类| 国产成人调教在线视频| 日本不卡视频在线| 国产95在线 | 国产三级韩国三级理| 成人无码一区二区三区视频在线观看| 亚洲Av综合日韩精品久久久| 亚洲成人动漫在线观看| 国产精品jizz在线观看软件| 欧美第二区| 国产日本欧美在线观看| 色综合久久久久8天国| 2021国产v亚洲v天堂无码| 精品久久久久久中文字幕女| 国产精品性| 天堂网亚洲系列亚洲系列| 中文字幕色站| 国产无码高清视频不卡| 丰满少妇αⅴ无码区| 国产一区二区视频在线| 婷婷五月在线视频| 最新无码专区超级碰碰碰| 一级成人欧美一区在线观看| 国产又粗又猛又爽视频| 国产丝袜啪啪| 久久久久亚洲精品成人网 | 亚洲精品另类| 亚洲欧美在线综合图区| 欧美在线观看不卡| AV熟女乱| 天天综合网色| 精品视频在线一区| 久久精品娱乐亚洲领先| 无码一区中文字幕| 人妻丰满熟妇AV无码区| 香蕉久人久人青草青草| 亚洲天堂啪啪| 毛片久久网站小视频| 欧美成人怡春院在线激情| 国产无套粉嫩白浆| 国产亚洲精品97在线观看| 青青青国产精品国产精品美女| 中文字幕伦视频|