首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

CAS 3.2.0 client 设立

2012-10-15 
CAS 3.2.0 client 设置导入两个必要的包,cas-client-3.2.0-release.zip里面modules文件夹下的cas-client-c

CAS 3.2.0 client 设置
导入两个必要的包,cas-client-3.2.0-release.zip里面modules文件夹下的
cas-client-core-3.2.0.jar和commons-logging-1.1.jar

工程主要修改web.xml即可  包含2个部分
1、 如果不想要这个功能的话可以不添加

<!-- 单点登出,一定要在最前面  -->      <filter>          <filter-name>CAS Single Sign Out Filter</filter-name>          <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>      </filter>      <filter-mapping>          <filter-name>CAS Single Sign Out Filter</filter-name>          <url-pattern>/*</url-pattern>      </filter-mapping>      <listener>          <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>      </listener>  


2、 注意顺序 AuthenticationFilter (认证),Cas20ProxyReceivingTicketValidationFilter(ticket认证),HttpServletRequestWrapperFilter(用户信息传输 貌似是)
还有若干是可选配置


<filter>          <filter-name>CAS Authentication Filter</filter-name>          <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>          <!-- CAS login 服务地址-->          <init-param>              <param-name>casServerLoginUrl</param-name>              <param-value>http://124.93.222.78:8433/cas/login</param-value>        </init-param>          <!-- 客户端应用服务地址-->          <init-param>              <param-name>serverName</param-name>              <param-value>http://localhost:8080</param-value>         </init-param>      </filter>        <!--负责Ticket校验 可选-->      <filter>          <filter-name>CAS Validation Filter</filter-name>          <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>          <init-param>              <param-name>casServerUrlPrefix</param-name>              <!-- 下面一定要是主机名称 -->              <param-value>http://124.93.222.78:8433/cas</param-value>        </init-param>          <init-param>              <param-name>serverName</param-name>              <param-value>http://localhost:8080</param-value>        </init-param>          <init-param>              <param-name>useSession</param-name>              <param-value>true</param-value>          </init-param>          <init-param>              <param-name>redirectAfterValidation</param-name>              <param-value>true</param-value>          </init-param>      </filter>        <filter>          <filter-name>CAS HttpServletRequest WrapperFilter</filter-name>          <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>      </filter>        <filter-mapping>          <filter-name>CAS Authentication Filter</filter-name>          <url-pattern>/protected/*</url-pattern>      </filter-mapping>        <filter-mapping>          <filter-name>CAS Validation Filter</filter-name>          <url-pattern>/protected/*</url-pattern>      </filter-mapping>        <filter-mapping>          <filter-name>CAS HttpServletRequest WrapperFilter</filter-name>          <url-pattern>/protected/*</url-pattern>      </filter-mapping>  


这样就可以了


至于退出时候可能遇到的Session没有删除问题,需要手动的去session.invalidate()一下。官网推荐:
Recommend Logout Procedure

The CAS Client for Java has no code to help you handle log out. The client merely places objects in session. Therefore, we recommend you do a session.invalidate() call when you log a user out. However, that's entirely your application's responsibility.

另外这个文章可能有用 不过还没仔细看
CAS Logout 通知所有登录客户端销毁Session(转自:http://blog.sina.com.cn/s/blog_51e917db01009v6n.html)

具体通知由org.jasig.cas.authentication.principal.AbstractWebApplicationService发出。logOutOfService方法生成发送消息,然后由org.jasig.cas.util.HttpClient的sendMessageToEndPoint方法发出。

public boolean sendMessageToEndPoint(final String url, final String message) {              HttpURLConnection connection = null;        BufferedReader in = null;        try {            if (log.isDebugEnabled()) {                log.debug("Attempting to access " + url);            }            final URL logoutUrl = new URL(url);            final String output = "logoutRequest=" + URLEncoder.encode(message, "UTF-8");            connection = (HttpURLConnection) logoutUrl.openConnection();            connection.setDoInput(true);            connection.setDoOutput(true);            connection.setReadTimeout(this.readTimeout);            connection.setConnectTimeout(this.connectionTimeout);            connection.setRequestProperty("Content-Length", ""                + Integer.toString(output.getBytes().length));            connection.setRequestProperty("Content-Type",                "application/x-www-form-urlencoded");            final DataOutputStream printout = new DataOutputStream(connection                .getOutputStream());            printout.writeBytes(output);            printout.flush();            printout.close();            in = new BufferedReader(new InputStreamReader(connection                .getInputStream()));            while (in.readLine() != null) {                // nothing to do            }                       if (log.isDebugEnabled()) {                log.debug("Finished sending message to" + url);            }            return true;        } catch (final Exception e) {            log.error(e,e);            return false;        } finally {            if (in != null) {                try {                    in.close();                } catch (final IOException e) {                    // can't do anything                }            }            if (connection != null) {                connection.disconnect();            }        }    }
1 楼 kevin.hwq 2012-05-18   good! 正好要用到

热点排行