David.Turing's blog

           

          CAS集成Weblogic的ServletAuthentication調用

          本來,使用j_security_check是最簡單的Build-in認證方式,但CAS有自己的登錄入口,即login servlet,如果用該servlet,必須自己動手完成JAAS的登錄。于是,開始擴展CAS的edu.yale.its.tp.cas.auth.provider,在該包中的provider都擴展自authHandler接口,而CAS是在web.xml中定義了最終使用哪一個authHandler。

          edu.yale.its.tp.cas.authHandler
          edu.yale.its.tp.cas.auth.provider.WeblogicHandler

          我自己寫了一個WeblogicHandler(edu.yale.its.tp.cas.auth.provider包中),專門讓CAS登錄到Weblogic Server,事實上,將來如果不用WLS,還可能使用Websphere,Jboss,AD之類。

          后來發現,雖然能loginContext拿到Subject,但該Subject的Principal不能被頁面的request.getPrincipal()所取得,醒悟自己在做JAAS Login,查看weblogic文檔,原來Weblogic提供了
          weblogic.servlet.security.ServletAuthentication
          用于在Servlet端調用JAAS接口進行登錄,通過該接口登錄后,就如同User使用了標準的登錄機制登入了Weblogic。
          于是,立即修改了login servlet測試一下,加入

          try {
          CallbackHandler handler = new SimpleCallbackHandler(
          request.getParameter("username"),
          request.getParameter("password"));
          Subject mySubject = weblogic.security.services.Authentication
          .login(handler);
          weblogic.servlet.security.ServletAuthentication.runAs(
          mySubject, request);
          System.out.println("mySubject[" +mySubject.toString()+"]"+
          "寫入Session");
          } catch (LoginException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }

          然后,頁面果然就能拿到Pincipal了。

          posted on 2006-04-02 12:02 david.turing 閱讀(3051) 評論(1)  編輯  收藏 所屬分類: Security領域

          評論

          # re: CAS集成Weblogic的ServletAuthentication調用 2007-04-25 09:07 cas funs

          能不能將edu.yale.its.tp.cas.auth.provider.WeblogicHandler代碼展示一下,另外如果CAS同時支持登錄到weblogic和websphere應用中如何實現?  回復  更多評論   

          導航

          統計

          常用鏈接

          留言簿(110)

          我參與的團隊

          隨筆分類(126)

          隨筆檔案(155)

          文章分類(9)

          文章檔案(19)

          相冊

          搜索

          積分與排名

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 雅江县| 正宁县| 水富县| 安丘市| 澳门| 安仁县| 辽源市| 乐东| 德清县| 武穴市| 扶绥县| 西林县| 庆阳市| 讷河市| 白山市| 阿荣旗| 依兰县| 绍兴县| 琼中| 古蔺县| 罗田县| 盐城市| 黄山市| 斗六市| 昭平县| 靖宇县| 沙河市| 华容县| 额尔古纳市| 多伦县| 柳州市| 饶阳县| 三亚市| 孟村| 仪征市| 郓城县| 昌宁县| 沙湾县| 前郭尔| 定兴县| 克什克腾旗|