<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    David.Turing's blog

     

    剖析CAS Proxy的設計原理

    由于CAS在開源社區的影響力,它逐漸被應用到各種復雜的SSO環境中。CAS的基本原理在廣州UserGroup上有很多文章介紹,我不再做原理性的探討,但CAS Proxy稍微復雜,值得對其作一個剖析,以便在日后的配置中減少配置上的失誤。
    1,CAS Proxy的目的
    CAS Proxy的目的是,當瀏覽器用戶Peter訪問應用A,應用A引用了應用B1, B2的授權性資源(Authorized Resource),應用A想代表Peter去訪問應用B1, B2,因此應用A需要告訴應用B1, B2當前用戶是誰,以便B1,B2對Peter的Request進行授權。這就是CAS代理(Proxy)。

    這種情況很可能出Portal中,比如我在一個Web應用中要求同時從mail.163.com(應用B1),mail.126.com(應用B2)收取郵件并Load入到現在的應用A中去。這種場景中,應用A不可能分別Redirect用戶Peter到163.com或者126.com去(因為用戶是想要A展示B1,B2的內容,他并不是要訪問163,126),只不過B1,B2需要認證才能訪問,因此,A承擔著這樣一個角色,代表用戶peter去load B1,B2的郵件。

    2,CAS Proxy的執行場景
    CAS?Proxy協議很準確的描述了這種場景,簡單起見,將場景分為兩Part:

    PartA[獲取PGT]:

    什么是PGT,PGT就是不需要S,T就能獲取到NetID的票據,如果你對票據(Ticket),服務票據
    等概念不理解,建議請閱讀<Weblogic Security In Action>中篇的Kerberos協議部分。

    簡單的說,票據(Ticket)就是一張門票,你來看周杰倫的演唱會,你需要門票,那門票叫做
    Ticket,本文中的T,周杰倫演唱會就是S(Service)。
    你憑什么拿到T,當然不是因為你懂Java,而是因為你是周杰倫的VIP Fans,VIP Fans有VIP卡(即文中的C, Credential,中文翻譯叫做憑證),他憑這個C可以拿到票(T),注意,是S Service(周杰倫演唱會)而不是Z Service(李宇春演唱會)或者Y Service (張靚穎演唱會)! 這個T比較巧妙,類似地鐵票,CAS將它設計成一次性的票據,周杰倫拿著它給CAS Server一驗證,便知道你是誰了(NetID),恩,原來是VIP Fans,歡迎歡迎........
    這本來就是CAS基本模式了,本模式還附屬了一個PGTURL和PGT(PGTIOU僅僅用于關聯作用,忽略),搞清楚PGT和PGTURL,是成功配置CAS Proxy的關鍵。
    PGT的概念(我不敢打比喻了)是,它被應用A用來代理瀏覽器用戶Peter去訪問其他更多的應用的憑據。沒錯,它是一個憑據,你知道,CAS/Kerberos的世界,做任何事情都需要憑據(Ticket)。所以,如果A要做這個代理訪問動作,它依賴于PGT,PGT的用法見PartB,這里你知需要明白,PGT是給A用來向B1, B2兩個應用證實用戶Peter的身份,至于B1,B2怎么做,那還要看Peter的NetID是否具有取B1, B2郵件的權限。

    cas_proxy_1.gif


    PartB[獲取PGT]:

    PartB展示了PGT的作用,應用A(下圖中的Web application)向CAS Server提交S和PGT,S乃自己的應用標識,PGT最終讓A獲得PT,PT跟ST的作用一模一樣,它也是一次性的票據,A傳PT給后端的B1(下圖中的Back-end application),B1就可以根據這個PT獲得A現在代理的用戶Peter的NetID了,如下圖所示。
    cas_proxy_2.gif


    最后,我們比較一下PartA和PartB
    PartA,A因為ST獲得Peter的NetID
    PartB,B1因為PT獲得Peter的NetID

    誰告訴B1 Peter的NetID, A!Proxy的由來就是這樣,A就是CAS Proxy!!

    有人問,干嘛這么麻煩,既然PartA中,A已經知道Perter的NetID,為何不直接告訴B1關于Peter的NetID?
    理由很簡單,SSO依賴于域的一種信任關系,也就是,
    1)瀏覽器用戶是不可信的,如果可信,那么認證要來干什么?
    2)CAS Server是可信的,如果CAS Server不可信,認證會有結果嗎?
    3)Web應用可信嗎?如果你認為可信,那么你就會問上面那個問題,呵呵。

    事實上,在CAS實際環境中,CAS僅僅依賴于信任證書的部署和雙向SSL來實現信任關系的建立和核實。應用A和應用B是完全不同的兩個應用,他們之間并沒有建立信任關系,因此如果A告訴B1, B2關于Peter的NetID, B1,B2也不會相信,B1,B2只信任CAS Server(CAS環境唯一可以信賴的東西,這就是單點登錄的前置條件——單點信任),最終,問題仍然需要A向通過CAS Server向B提交一個Peter身世(NetID)的說法。

    3, Proxy配置

    CAS Client端:
    配置Web應用的web.xml使用casclient.jar的兩個servlet:

    ?? < servlet >
    ????
    < servlet-name > ProxyTicketReceptor </ servlet-name >
    ????
    < servlet-class > edu.yale.its.tp.cas.proxy.ProxyTicketReceptor </ servlet-class >
    ??
    </ servlet >

    ??
    < servlet-mapping >
    ????
    < servlet-name > ProxyTicketReceptor </ servlet-name >
    ????
    < url-pattern > /CasProxyServlet </ url-pattern >
    ??
    </ servlet-mapping >

    ???
    另外,在CAS Server端,確保CAS-Server的兩個關于Proxy的Servlet能夠正常被加載(默認配置即可)。

    ???? <!-- ?Proxy?(PGT?acquisition)? -->
    ????
    < servlet >
    ??????
    < servlet-name > Proxy </ servlet-name >
    ??????
    < servlet-class > edu.yale.its.tp.cas.servlet.Proxy </ servlet-class >
    ????
    </ servlet >

    ????
    <!-- ?Modern?proxy-service?validation? -->
    ????
    < servlet >
    ??????
    < servlet-name > ProxyValidate </ servlet-name >
    ??????
    < servlet-class > edu.yale.its.tp.cas.servlet.ProxyValidate </ servlet-class >
    ????
    </ servlet >

    最后一步,先Look一下如何單步調試CAS Proxy的過程,然后就可以自己編寫一個簡單的應用A和應用B1,B2來測試CAS Proxy了。

    posted on 2006-04-26 23:54 david.turing 閱讀(14479) 評論(0)  編輯  收藏 所屬分類: Security領域

    導航

    統計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日本乱码一区二区在线二产线| 亚洲日韩国产一区二区三区在线| 久久久久久夜精品精品免费啦| 精品亚洲成a人片在线观看| 国产又黄又爽又猛免费app| 猫咪免费人成网站在线观看入口| 中文亚洲AV片在线观看不卡 | 亚洲一级毛片免费观看| 亚洲精品无码av中文字幕| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产午夜成人免费看片无遮挡 | 亚洲13又紧又嫩又水多| 亚洲精品成人网久久久久久 | 亚洲人成网亚洲欧洲无码久久| 亚洲黄色免费观看| 青青草国产免费国产是公开| 91久久亚洲国产成人精品性色| 又粗又黄又猛又爽大片免费| 日韩精品人妻系列无码专区免费| 爱情岛论坛亚洲品质自拍视频网站| 亚洲电影中文字幕| 男人的天堂亚洲一区二区三区| 十八禁在线观看视频播放免费| 亚洲综合一区二区三区四区五区 | 亚洲bt加勒比一区二区| 国产免费131美女视频| 91高清免费国产自产| www一区二区www免费| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 自拍偷自拍亚洲精品偷一| 亚洲欧洲视频在线观看| 国产亚洲精品a在线无码| 波多野结衣中文一区二区免费| 波多野结衣中文字幕免费视频| 99久久99这里只有免费的精品| 亚洲av无码专区在线电影天堂| 亚洲精品国产成人| 亚洲VA中文字幕不卡无码| 免费大黄网站在线观| 免费毛片网站在线观看| 成人在线免费看片|