關(guān)于cas原理
from:http://www.javaeye.com/topic/21770?page=3
CAS用來標(biāo)志用戶的token是存在它自己的域名下的,不是存在web應(yīng)用的域名下的.CAS判斷用戶登錄由agent決定,agent驗(yàn)證用戶信息有兩種處理.
1.如果這個用戶是以前沒登錄過的,也就是說這個web應(yīng)用的域名下沒有一個agent頒發(fā)的sessionid(在cookie里)的話,那么它會跳轉(zhuǎn)到CAS server的登錄界面(這里由CAS server決定是否顯示登錄界面,還是直接就跳轉(zhuǎn)回來,也就是不是每次都要求輸入密碼登錄的).
2.CAS的登錄界面會有兩種處理.如果以前沒登錄過,也就是在CAS server自己的域名下,沒有用戶的token的話,就要求登錄.如果有token的話,就返回一個ticket(也就是不顯示登錄界面直接重定向返回了).
然后接第一步里面,agent收到ticket以后就提交給CAS server驗(yàn)證,并取得返回信息(是個xml,cas的協(xié)議規(guī)定的,也可以用saml之類的,這個地方可以取得除了用戶姓名以外的信息,這樣就可以做同步了,權(quán)限的問題可以這么解決).然后agent就保存此時(shí)的session,把sessionid放到該web應(yīng)用域名下的cookie里.
以上邏輯說明了,標(biāo)志用戶身份的token在CAS server的域名下,每個web應(yīng)用不保存用戶身份.因此跨域是絕對沒問題的.只是single sign off就需要CAS server的配合了,要把那個token刪掉.
不過如果標(biāo)志身份的token不存在,而sessionid存在,那還是被認(rèn)為是登錄的,只不過是在等待那個session timeout而已.
Let life be beautiful like summer flowers and death like autumn leaves.
posted on 2008-06-07 09:19 Alexwan 閱讀(454) 評論(0) 編輯 收藏 所屬分類: J2EE