<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如何跟普通的Web系統(tǒng)融合認(rèn)證和授權(quán)

    CAS的作用是負(fù)責(zé)單點(diǎn)登錄,登錄細(xì)節(jié)當(dāng)然要自己寫,CAS3有一個(gè)這樣的AuthenticationHandler 接口,繼承關(guān)系如下
    1,AbstractAuthenticationHandler implements AuthenticationHandler
    2,AbstractUsernamePasswordAuthenticationHandler extends AbstractAuthenticationHandler

    AbstractUsernamePasswordAuthenticationHandler 正是你認(rèn)證管理的著手點(diǎn),你寫一個(gè)類,如WeblogicAuthenticanHandler去擴(kuò)展它。

    你先看看下面的接口:

    public interface AuthenticationHandler {

        /**
         * Method to determine if the credentials supplied can be authenticated.
         *
         * @param credentials The credentials to authenticate
         * @return true if authenticated and false they are not
         * @throws AuthenticationException An AuthenticationException can contain details about why a particular authentication request failed.
         * AuthenticationExceptions contain code/desc.
         */
        boolean authenticate(Credentials credentials) throws AuthenticationException;
    }


    authenticate這個(gè)接口是每個(gè)Hander都必須實(shí)現(xiàn),當(dāng)然,AbstractHandler將它轉(zhuǎn)交給 authenticateInternal 方法去實(shí)現(xiàn)。

    認(rèn)證有兩種情況,成功或者失敗,true or false。
    我使用Weblogic的LoginModule

    loginContext = new LoginContext("WeblogicUsernamePasswordModule", new WeblogicCallbackHandler(username, password, url));

    它拋出個(gè)各種不同的認(rèn)證異常讓我輕松判斷認(rèn)證過程中發(fā)生了什么事情,
         /**
          * Attempt authentication
          */
         try
         {
           // If we return without an exception, authentication succeeded
           loginContext.login();
         }
         catch(FailedLoginException fle)
         {
           System.out.println("Authentication Failed, " + fle.getMessage());
           loginsccess=false;
         }
         catch(AccountExpiredException aee)
         {
           System.out.println("Authentication Failed: Account Expired");
           loginsccess=false;
         }
         catch(CredentialExpiredException cee)
         {
           System.out.println("Authentication Failed: Credentials Expired");
           loginsccess=false;
         }
         catch(Exception e)
         {
           System.out.println("Authentication Failed: Unexpected Exception, " + e.getMessage());
           loginsccess=false;
         }

    如果一切正常,授權(quán)開始了。

         if(loginsccess==true)
         {
          /**
           * Retrieve authenticated subject, perform SampleAction as Subject
           */
          subject = loginContext.getSubject();
          System.out.println("User["+ username+"]["+ password+"] Login Success, Subject is"+subject.toString());
          return true;
         }
         else
         {
          System.out.println("User["+ username+"]["+ password+"] Login Fail, Check!!!!!");
          return false;
         }

    OK,獲得了Subject,那你就可以獲得principal,編程式授權(quán)便有了依據(jù)。
    同時(shí),你還可以用Weblogic的聲明式授權(quán),直接在web.xml中定義資源的授權(quán)規(guī)則。

    更多關(guān)于認(rèn)證授權(quán),請(qǐng)看[Weblogic Security In Action]
    http://dev2dev.bea.com.cn/bbs/servlet/D2DServlet/download/81-26770-158358-1697/WeblogicSecurityInAction(1).swf

    posted on 2006-02-09 13:50 david.turing 閱讀(4179) 評(píng)論(4)  編輯  收藏 所屬分類: Security領(lǐng)域

    評(píng)論

    # re: CAS如何跟普通的Web系統(tǒng)融合認(rèn)證和授權(quán) 2007-01-25 00:15 sunky

    授權(quán)開始了?

    別搞笑了,授權(quán)是在cas-client進(jìn)行的,對(duì)于cas-client,根本沒考慮跟JAVAEE安全的集成  回復(fù)  更多評(píng)論   

    # re: CAS如何跟普通的Web系統(tǒng)融合認(rèn)證和授權(quán) 2007-01-25 00:17 sunky

    我對(duì)本BLOG的主人絕對(duì)表示敬意,能把自己的研究成果共享出來(lái)就是了不起的,但某些觀點(diǎn)還是不正確的,我對(duì)前面過激言論表示道歉。  回復(fù)  更多評(píng)論   

    # re: CAS如何跟普通的Web系統(tǒng)融合認(rèn)證和授權(quán) 2007-01-25 00:25 sunky

    并不想夸夸其談。還是說點(diǎn)自己的建議吧

    授權(quán)如何跟應(yīng)用服務(wù)器集成這一點(diǎn),有很多種方案,無(wú)外乎如何讓應(yīng)用服務(wù)器認(rèn)識(shí)已經(jīng)認(rèn)證成功的用戶身份。這又視乎應(yīng)用服務(wù)器廠商提供何種方案。比如,應(yīng)由用服務(wù)器廠商與CAS緊密集成,通過配置,如果是CAS認(rèn)證,則在認(rèn)證中心認(rèn)證后,在應(yīng)用服務(wù)器的認(rèn)證模塊中添加認(rèn)證到CAS認(rèn)證中心的模塊,以便認(rèn)證中心的判斷;或者,應(yīng)用服務(wù)器廠商提供接口,由SSO解決方案提供商實(shí)現(xiàn)到應(yīng)用服務(wù)器的認(rèn)證。還有別的方案,但不如前面提到的兩種方案這么方便。  回復(fù)  更多評(píng)論   

    # re: CAS如何跟普通的Web系統(tǒng)融合認(rèn)證和授權(quán) 2007-01-25 10:12 david.turing

    1,認(rèn)證跟授權(quán)分離, 可以實(shí)現(xiàn)組件甚至應(yīng)用服務(wù)的分離.
    2,得益于1,因此,我們可以將原先各個(gè)獨(dú)立的應(yīng)用服務(wù)器系統(tǒng)中認(rèn)證模塊抽取到一個(gè)單點(diǎn),做一個(gè)Single Sign-On
    3,于是原先的公式是
    N個(gè)認(rèn)證模塊+N個(gè)授權(quán)模塊=>1個(gè)認(rèn)證模塊+N個(gè)授權(quán)模塊
    你考慮的問題最終會(huì)體現(xiàn)實(shí)認(rèn)證的互操作性,但目標(biāo)仍然沒有脫離統(tǒng)一認(rèn)證這個(gè)需求.
    但考慮到各個(gè)應(yīng)用集成商之間對(duì)認(rèn)證過程的不同實(shí)現(xiàn)標(biāo)準(zhǔn), 的確需要一個(gè)統(tǒng)一的認(rèn)證接口, SAML會(huì)是一個(gè)很好的開始.
    但前提是你是否充分理解了,在SSO的過程中,協(xié)議是如何安全地傳遞用戶的Credential,這一點(diǎn)非常關(guān)鍵, 以致于你提問題的方式也會(huì)有所不同.   回復(fù)  更多評(píng)論   

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(110)

    我參與的團(tuán)隊(duì)

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊(cè)

    搜索

    積分與排名

    最新隨筆

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 91人成网站色www免费下载| 亚洲一区在线视频观看| 91九色老熟女免费资源站| 粉色视频在线观看www免费| 亚洲色成人网一二三区| 国产AV无码专区亚洲AV漫画| 国产精品视频免费一区二区| 久久久久免费看成人影片| 特级av毛片免费观看| 亚洲成av人片在线天堂无| 亚洲尹人九九大色香蕉网站 | 在线播放免费人成视频在线观看| www永久免费视频| 一级片在线免费看| 暖暖免费中文在线日本| 亚洲AV无码专区在线厂| 污视频网站免费在线观看| 免费精品国自产拍在线播放| 亚洲av成人一区二区三区观看在线| 国产成人精品日本亚洲直接| 亚洲国产精品综合久久久| 亚洲春色在线观看| 亚洲av无码无线在线观看| 亚洲国产视频久久| 亚洲福利视频一区| 亚洲AV无码成人精品区在线观看 | 最近国语视频在线观看免费播放| 中文字幕亚洲色图| 亚洲Av无码乱码在线znlu| 在线观看无码AV网站永久免费| 国产综合精品久久亚洲| 亚洲国产成人va在线观看网址| 国产99在线|亚洲| 亚洲色大成网站www| 一级毛片免费在线观看网站| 两个人看的www免费视频| 中文字幕无码免费久久99| 国产v片免费播放| 精品亚洲麻豆1区2区3区| 亚洲经典千人经典日产| 中文字幕在线成人免费看|