CAS简单实例
CAS Server部署在了解了CAS是什么以及CAS的作用之后,我们可以开始体验对CAS的使用了。首先下载CAS Server,下载路径:http://developer.jasig.org/cas/当然也可以在github上下载cas server,但是放在github上的版本不再是用maven部署的项目了。所以,如果你习惯使用maven,然后对版本没有太高的要求,可以在上面的网站下载,我们这
CAS Server部署
在了解了CAS是什么以及CAS的作用之后,我们可以开始体验对CAS的使用了。
首先下载CAS Server,下载路径:http://developer.jasig.org/cas/
当然也可以在github上下载cas server,但是放在github上的版本不再是用maven部署的项目了。
所以,如果你习惯使用maven,然后对版本没有太高的要求,可以在上面的网站下载,我们这里选用cas server 4.0版本。
然后我们将cas-server解压,将多模块maven项目导入到Eclipse。
cas server默认支持的请求方式是https ssl,所以如果我们想要使用简单的http请求来测试,那么我们需要对cas-server-webapp这个Maven项目里面的配置文件进行更改。
修改配置
0.修改 WEB-INF/deployerConfigContext.xml
<bean id="proxyAuthenticationHandler"
class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"/>
中添加 p:requireSecure=”false”
<bean id="proxyAuthenticationHandler"
class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" p:requireSecure="false"/>
1.修改WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
将p:cookieSecure=”true”修改为p:cookieSecure=”false”
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
2.修改WEB-INF/spring-configuration/warnCookieGenerator.xml
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
也是将p:cookieSecure=”true”修改为p:cookieSecure=”false”
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
3.如果该程序所在的tomcat服务器端口不是默认的8080,那么就需要修改WEB-INF/cas.properties
server.name=http://localhost:8080
将端口修改,当然如果有在hosts里配置域名的话,也可以把localhost替换成域名。
完成了这些后,我们就可以用tomcat来启动cas-server-webapp这个项目了。
访问CAS
我并没有更改tomcat端口,也咩有使用域名,这个时候我们访问10.18.1.132:9060/cas/
我们会来到默认的登陆页面。
注意:在某些教程中,你会看到说我们只需要输入相同的用户名和密码就可以通过校验,但是在cas server 4.0及以后的版本中,用户名和密码不再是简单的相同就可以通过验证了,而是给出了一个配置文件用来配置默认的登陆用户名和密码,系统默认设置的只有一个 casuser/Mellon。这个配置在deployerConfigContext.xml,primaryAuthenticationHandler这个bean中。
CAS Client部署
我们现在已经把Server端部署好了,接下来就需要部署client端了。
0.新建两个Maven web app项目:testapp1,testapp2。
1.对两个项目就行简单配置。
首先我们需要引入cas-client的相关包。
在pom.xml中加入
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
然后我们需要在web.xml中配置一些过滤器以及监听器。
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<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>
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>http://localhost:8080/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://localhost:8081/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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://localhost:8080/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://localhost:8081</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:CAS FIlter和CAS Validation Filter中对serverName这个init-param的value是不一样的,具体不同看配置。
还有这里我们使用了不同的端口,这里的tomcat端口已经不是8080了,而是8081。
而对于testapp2的配置,我们只需要做下相应的更改就好了,testapp2对应的tomcat端口为8082。
如何在不同的tomcat端口中部署项目
当我们对testapp1和testapp2都部署好了之后。我们就需要在tomcat中启动他们,但是与我们平时启动项目不一样,因为我们不想再让这两个项目在默认的tomcat端口中部署了。那需要怎样部署呢?
我是使用Eclipse里的Tomcat来进行部署的,也就是需要对servers这个项目的server.xml进行更改。
添加以下内容。
<Service name="Catalina1">
<Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1"
redirectPort="8443" />
<Connector port="8001" protocol="AJP/1.3" redirectPort="8443" />
<Engine defaultHost="localhost" name="Catalina1">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
<Host appBase="wtpwebapps" autoDeploy="true" name="localhost"
unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log."
suffix=".txt" />
<Context docBase="testapp1" path="/testapp1" reloadable="true"
source="org.eclipse.jst.j2ee.server:testapp1" />
</Host>
</Engine>
</Service>
<Service name="Catalina2">
<Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1"
redirectPort="8443" />
<Connector port="8002" protocol="AJP/1.3" redirectPort="8443" />
<Engine defaultHost="localhost" name="Catalina2">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
<Host appBase="wtpwebapps" autoDeploy="true" name="localhost"
unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log."
suffix=".txt" />
<Context docBase="testapp1" path="/testapp1" reloadable="true"
source="org.eclipse.jst.j2ee.server:testapp2" />
</Host>
</Engine>
</Service>
这里我在第一次配置的时候出现了问题,当时是直接把已经部署好了的cas-server的配置粘过来改的。其中Host节点的appBase属性对应的值是webapps,然后我们更改了相应的端口号之后,我们启动Tomcat,发现报错,提示找到不到相应的文件:
D:\UM\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\testapp1
,然后到相应的位置找,确实是没有,但是却在wtpwebapps中找到了,然后把appBase的属性值改为wtpwebapps再运行,发现无误。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)