<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)融合認證和授權(quán)

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

    AbstractUsernamePasswordAuthenticationHandler 正是你認證管理的著手點,你寫一個類,如WeblogicAuthenticanHandler去擴展它。

    你先看看下面的接口:

    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這個接口是每個Hander都必須實現(xiàn),當(dāng)然,AbstractHandler將它轉(zhuǎn)交給 authenticateInternal 方法去實現(xiàn)。

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

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

    它拋出個各種不同的認證異常讓我輕松判斷認證過程中發(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ù)。
    同時,你還可以用Weblogic的聲明式授權(quán),直接在web.xml中定義資源的授權(quán)規(guī)則。

    更多關(guān)于認證授權(quán),請看[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) 評論(4)  編輯  收藏 所屬分類: Security領(lǐng)域

    評論

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

    授權(quán)開始了?

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

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

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

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

    并不想夸夸其談。還是說點自己的建議吧

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

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

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

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲美女人黄网成人女| 亚洲精品国产精品乱码不99| jlzzjlzz亚洲jzjzjz| 最近2022中文字幕免费视频| 亚洲国产精品国自产电影| 日韩电影免费在线观看中文字幕| 亚洲日韩精品无码专区网址| 最近国语视频在线观看免费播放 | 无人在线观看免费高清视频| 亚洲人成网站18禁止久久影院 | 欧洲黑大粗无码免费| 亚洲国产成人99精品激情在线| 成年轻人网站色免费看| 亚洲一本一道一区二区三区| 国产成人精品男人免费| 香港特级三A毛片免费观看| 亚洲精品无码成人片在线观看| 中文永久免费观看网站| 亚洲国产香蕉碰碰人人| 最近中文字幕高清免费中文字幕mv| 亚洲精品中文字幕麻豆| 在线中文高清资源免费观看| 特级毛片aaaa级毛片免费| 久久久久国产成人精品亚洲午夜 | 久久狠狠躁免费观看2020| 亚洲成人动漫在线观看| 在线免费观看视频你懂的| 一个人看的免费观看日本视频www| 亚洲大尺度无码无码专区| 在线观看H网址免费入口| 色五月五月丁香亚洲综合网| 亚洲婷婷国产精品电影人久久| 无码人妻一区二区三区免费n鬼沢| 国产成人精品日本亚洲网址| 免费国产成人午夜电影| 大地资源网高清在线观看免费| 亚洲av日韩av综合| 国产成人高清亚洲| 成人免费AA片在线观看| a级毛片免费网站| 亚洲乱码在线观看|