<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 閱讀(4178) 評(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ì)表示敬意,能把自己的研究成果共享出來就是了不起的,但某些觀點(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),有很多種方案,無外乎如何讓應(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)論排行榜

    主站蜘蛛池模板: 亚洲精品无码久久久影院相关影片| 理论亚洲区美一区二区三区 | 午夜两性色视频免费网站| 亚洲国产高清在线| 8x成人永久免费视频| 亚洲酒色1314狠狠做| 国产精品1024永久免费视频| 亚洲国产成人综合| 成熟女人牲交片免费观看视频| 亚洲网站在线播放| 中文字幕无码成人免费视频| 亚洲一级片在线观看| 免费无码AV电影在线观看| 亚洲av无码专区青青草原| 深夜国产福利99亚洲视频| 狠狠躁狠狠爱免费视频无码 | 亚洲精品天堂成人片?V在线播放| 亚洲欧美在线x视频| 亚洲综合另类小说色区色噜噜| 337p日本欧洲亚洲大胆人人| 亚洲成A人片77777国产| a级毛片在线免费观看| 亚洲婷婷综合色高清在线| 午夜爱爱免费视频| fc2免费人成在线| 久久亚洲精品中文字幕| 我要看WWW免费看插插视频| g0g0人体全免费高清大胆视频| 亚洲香蕉成人AV网站在线观看| 精品国产污污免费网站入口| 亚洲国产精品婷婷久久| 拨牐拨牐x8免费| 99精品视频在线观看免费| 亚洲熟妇av一区二区三区下载| 成人奭片免费观看| 亚州**色毛片免费观看| 亚洲综合综合在线| 免费成人av电影| 日本免费xxxx| 成人片黄网站色大片免费观看cn| 国产亚洲3p无码一区二区|