jasig-cas单点登录配置

jasig_cas配置步骤:
前提:
winXp,tomcat-6.0.32,jdk 1.5.0_22,java_home已经配置,cas-server-3.3.5、cas-client-java-2.1.1

1、生成凭证

cls
rem please set the env JAVA_HOME before run this bat file
rem delete alia tomcat if it is existed
rem 删除已经存在的凭证
keytool -delete -alias tomcatsso -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
keytool -delete -alias tomcatsso -storepass changeit

rem list all alias in the cacerts
rem 查看凭证列表
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

rem generator a key
rem 添加凭证tomcatsso,名称为IBXXUCBK7L0OEF1密码为changeit的凭证 (注意:IBXXUCBK7L0OEF1是本机的机器名,也可以换成域名)
keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=IBXXUCBK7L0OEF1" -storepass changeit

rem 导出凭证tomcatsso到目标文件 ,指定密码:changeit
keytool -export -alias tomcatsso -file "%java_home%/jre/lib/security/tomcatsso.crt" -storepass changeit

rem import into trust cacerts
keytool -import -alias tomcatsso -file "%java_home%/jre/lib/security/tomcatsso.crt" -keystore "%java_home%/jre/lib/security/cacerts" -storepass changeit

rem list all alias in the cacerts
rem 列出目录cacerts下的凭证列表
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

pause;


目标点生成的文件:
C:\Documents and Settings\Administrator\.keystore
C:\Program Files\Java\jdk1.5.0_22\jre\lib\security\tomcatsso.crt (安全证书)
注:tomcatsso.crt这个文件是可以直接执行的,在浏览器中能找到证书选项,可以删除等操作。

2、配置tomcat:http,https

--在%tomcat_home%/conf/server.xml文件的Service节点是用于配置http和https的
https的配置内容如下,属性keystoreFile、truststoreFile是上一步配置的凭证路径.

<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:\Documents and Settings\Administrator\.keystore" keystorePass="changeit"
truststoreFile="C:\Program Files\Java\jdk1.5.0_22\jre\lib\security\cacerts"
clientAuth="false" sslProtocol="TLS"/>


配置完成后启动tomcat,看是否能访问下面2个地址,能访问成功则配置完毕!
http://localhost:8080
https:localhost:8443

3、去jasig官方网站下载jasig
cas-server-3.3.5、cas-client-java-2.1.1
server端的cas-server-webapp或\modules\cas-server-webapp-3.3.5.war 是可以直接部署的,或在eclipse中建立空的j2ee项目然后把cas-server-webapp的内容拷贝到刚才建立的项目中去也可以。
cas-server下有许多文件夹, core、jdbc、ldap等等,这些文件是用与不同情况下的CAS搭建的。

4、搭建jasig-cas-server
完成第三部,启动tomcat并访问http://localhost:8080/casServer 会出现jasig的登录页面,输入帐号和密码一样长度的字符串则登录成功。 如果登录成功你在次刷新页面,则会要求重新登录!这不是CAS的BUG,默认的cas的index.jsp是直接
response.sendRedirect到login这个servlet的。
到此cas-server搭建完毕。

可能出现登录不了的情况:
1、tomcat和cas-server使用的不是同一套jdk。比如tomcat使用的是配置了证书的jdk,而cas-server使用的是编辑器默认的jdk,则会报一堆错误,其原因是cas是依靠凭证进行握手的时候error了,你懂得!
2、证书配置不正确。配置不正确则看看https:localhost:8443 是否能访问

5、搭建cas-client
以%tomcat_home%\webapps下的examples项目为例。
web.xml中添加cas-filter

<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>
edu.yale.its.tp.cas.client.filter.CASFilter
</filter-class>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.loginUrl
</param-name>
<param-value>https://IBXXUCBK7L0OEF1:8443/casServer/login</param-value>
</init-param>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.validateUrl
</param-name>
<param-value>
https://IBXXUCBK7L0OEF1:8443/casServer/serviceValidate
</param-value>
</init-param>
<init-param>
<param-name>
edu.yale.its.tp.cas.client.filter.serverName
</param-name>
<param-value>IBXXUCBK7L0OEF1:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
</filter-mapping>


lib中导入cas-client的包casclient.jar,有人说tomcat6中要添加commons-logging-api.jar包吧!这个我不清楚需不需要了。
访问cas-client (examples项目),下面3个连接都可以
http://localhost:8080/examples/servlets/servlet/HelloWorldExample
http://IBXXUCBK7L0OEF1:8080/examples/servlets/servlet/HelloWorldExample
http://127.0.0.1:8080/examples/servlets/servlet/HelloWorldExample

由于用户没有进行登录,会跳转到http://localhost:8080/casServer 只要输入的用户名和密码长度一样就能登录了,这个是cas默认的。
到此jasig-cas的整个配置就完成了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAS是一个开源的企业级登录解决方案,支持多种身份验证方式,并提供了丰富的扩展接口。下面是一个简的Java代码实现CAS登录的示例,假设已经在本地部署了CAS Server。 1. 添加CAS Client依赖 在应用系统的pom.xml文件中添加CAS Client的依赖: ```xml <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.6.0</version> </dependency> ``` 2. 配置CAS Client 在应用系统的配置文件中,需要配置CAS Server的URL、密钥等参数: ```properties # CAS Server的URL cas.server.url=https://cas.example.com:8443/cas # CAS Server的登录URL cas.server.login.url=${cas.server.url}/login # CAS Server的登出URL cas.server.logout.url=${cas.server.url}/logout # CAS Server的验证URL cas.server.validate.url=${cas.server.url}/validate # CAS Server的服务名称 cas.server.service.name=https://app.example.com # CAS Client的回调URL cas.client.callback.url=https://app.example.com/callback # CAS Client的密钥 cas.client.secret=secret ``` 3. 配置过滤器 在应用系统的web.xml文件中配置CAS Client的过滤器: ```xml <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>${cas.server.login.url}</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>${cas.server.service.name}</param-value> </init-param> </filter> <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>${cas.server.url}</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>${cas.server.service.name}</param-value> </init-param> </filter> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <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 Authentication Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 4. 编写回调页面 当用户在CAS Server上登录成功后,CAS Server会将用户重定向到应用系统的回调页面。应用系统需要在回调页面中获取用户信息,并将用户信息存储在会话(session)中。 ```java public class CallbackServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Assertion assertion = (Assertion) request.getSession().getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION); if (assertion != null) { String username = assertion.getPrincipal().getName(); // 获取用户名 // 将用户名存储在会话中 // ... } response.sendRedirect(request.getContextPath() + "/index.jsp"); } } ``` 以上就是一个简的Java代码实现CAS登录的示例。需要注意的是,实际应用中还需要考虑安全性、可扩展性等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值