activiti-explorer与cas结合实现伪单点登录

来源:互联网 发布:台湾人用淘宝吗 编辑:程序博客网 时间:2024/06/09 19:07

最近项目需要将activiti-explorer设计器实现单点登录,手头只有activiti-explorer的war包,所以决定使用比较简单的方式实现伪单点登录。

cas服务端的配置不在这个文章范围,本文章只写cas的client与activiti-explorer结合。

1.在activiti-explorer的web.xml配置cas代码

 <listener>    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  </listener>  <filter>    <filter-name>singleSignOutFilter</filter-name>    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>singleSignOutFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <filter>    <filter-name>CASAuthentication Filter</filter-name>    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>    <init-param>      <param-name>casServerLoginUrl</param-name>      <param-value>http://192.168.1.110:8080/cas/login</param-value>    </init-param>    <init-param>      <param-name>serverName</param-name>      <param-value>http://192.168.1.144:8080</param-value>    </init-param>  </filter>  <filter>    <filter-name>CASValidation Filter</filter-name>    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>    <init-param>      <param-name>casServerUrlPrefix</param-name>      <param-value>http://192.168.1.110:8080/cas/</param-value>    </init-param>    <init-param>      <param-name>serverName</param-name>      <param-value>http://192.168.1.144:8080</param-value>    </init-param>  </filter>  <filter>    <filter-name>CASHttpServletRequest Wrapper Filter</filter-name>    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  </filter>  <filter>    <filter-name>CASAssertion Thread Local Filter</filter-name>    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>CASAuthentication Filter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <filter-mapping>    <filter-name>CASValidation Filter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <filter-mapping>    <filter-name>CASHttpServletRequest Wrapper Filter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <filter-mapping>    <filter-name>CASAssertion Thread Local Filter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>


2.加入cas的jar包,这一步完成后启动项目,就可以完成先过cas登录页权限了,但跳到activiti-explorer登录页面后还需要手动登录。

3.完成activiti-explorer自动登录,简单思路:activiti-explorer在后台代码中获取到cas的用户名,进行判断,如果正确进入系统,前提条件是得实现登录按钮自动点击。

4.activiti-explorer使用的是vaadin框架,所以它的登录页面并不是jsp,而是纯java代码拼接而成,也就是在服务器端实现了jsp页面。但是activiti-explorer只有war包,所以需要对war包的class进行反编译。

5.反编译之后在ExplorerLoginForm.java类中添加拼接的js语句。




   在h后添加document.getElementById('auto').click();需要在登录按钮加一个id值auto。这一步实现自动点击。

   6.获取cas用户名,用request.getRemoteUser();来获取cas的用户名。cas是将HttpServletRequest对象再包装一次,包装成HttpServletRequestWrapperFilter,使其支持getUserPrincipal,getRemoteUser方法来取得登录的用户信息。如果是新建Spring的request,并不能直接获取到cas的用户名,所以需要在原activiti的request中获取到后传到Spring的request中。



   7.判断CasUser的值是否是数据库中有权限的用户,然后执行activiti-explorer登录代码。

原创粉丝点击