<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)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本v片免费一区二区三区| 免费成人福利视频| 免费国产在线观看老王影院| 国产精品亚洲四区在线观看| 大学生一级毛片免费看| 国产成人精品日本亚洲专区6| 国拍在线精品视频免费观看| 在线观看亚洲AV日韩A∨| 在线免费观看a级片| 亚洲AV无码国产精品永久一区| 日产乱码一卡二卡三免费| MM1313亚洲国产精品| 亚洲成年看片在线观看| 中文字幕av免费专区| 亚洲免费在线播放| 99热在线精品免费全部my| 亚洲aⅴ无码专区在线观看| 亚洲国产一区二区三区| 日本免费中文视频| 亚洲中文字幕在线无码一区二区 | 亚洲精品无码专区久久久| 精品成人免费自拍视频| 97se亚洲综合在线| 黄色网址免费观看| 亚洲AV无码之国产精品| a级亚洲片精品久久久久久久| 久久精品成人免费看| 亚洲宅男精品一区在线观看| 又色又污又黄无遮挡的免费视 | 57PAO成人国产永久免费视频 | 中文字幕乱码系列免费| 久久综合亚洲色一区二区三区| 在线观看免费人成视频| 一个人看的www免费在线视频| 亚洲日韩图片专区第1页| 免费毛片在线播放| 精品四虎免费观看国产高清午夜| 7777久久亚洲中文字幕| 国产精品亚洲视频| 毛片a级毛片免费观看免下载| 中文字幕免费在线看电影大全|