sso单点登录,cas统一认证

Sso(单点登录);

CASCentral Authentication Service,即中央认证服务)

Sso是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

统一的认证系统;ticket(统一的认证标志)

跨系统的实现;跨服务器的实现;

Cas

包含:cas server;cas client;

单点登录:Jasig cas使用,(Yale cas 就是Jasig cas

主参考文档

http://www.kafeitu.me/sso/2010/11/05/sso-cas-full-course.html

解决方案1---更简单,标准;网站和学籍系统集成采用此方案(因为为同一公司开发)

建立统一认证系统,所有用户都在其中进行管理和操作;

···

//一个用户登录两个系统;

解决方案2

1,分离的多个系统;如:学籍系统;网站系统;区县系统;

2,建立统一认证系统;提取每个系统的需交互账户;创建到统一认证系统中;定时自动更新,也可手动更新各系统的用户数据;

3,操作自系统时,不与统一认证系统和它系统发生关系关系;

4,点击关联系统超链,进入时:统一认证系统进行验证;更改用户信息时,跳回自系统进行操作;

···

//多少系统多少其下用户;

ssl证书

收费的,VeriSign ---正式商业项目使用;

免费的,CAcert;StartSSL; ---小的项目,可以使用;

自制的, ---学习时,可使用;

···

http://b.gkp.cc/2010/10/01/build-ssl-nginx-vhost-with-startssl/ ,StartSSL

Sina微博登录组件:

http://open.weibo.com/connect

Csdn的登录界面:

使用第三方登录;

设计一种云级别身份认证结构,

http://www.infoq.com/cn/articles/architecting-cloud-scale-identity

···

单对多模式;一个用户使用不同凭证登录不同系统;sina一个凭证,sina用户就可以登录本系统了;然后基于传递过来的用户信息,创建一个本系统用户,保存相应凭证;下次就可以再次直接使用了;

///

下载cas

http://www.jasig.org/cas 服务端,客户端;

1JDK自带的keytool工具生成证书

1),创建证书

新建d盘keys文件夹,cmd以管理员身份运行,输入下面命令:

keytool -genkey -alias aurora -keyalg RSA -keystore d:/keys/aurora

sso.wsria.com

输入密匙库口令:admin123


2),导出证书

keytool -export -file d:/keys/aurora.crt -alias aurora -keystore d:/keys/aurora

3),为客户端的JVM导入证书

Cmd,以管理员身份运行

cd C:\Program Files\Java\jdk1.7.0_02\jre\lib\security 

keytool -import -keystore “cacerts” -file D:/keys/aurora.crt -alias aurora

或,删除原证书后,下面输入,(上面个就可以,所以不使用这种)

keytool -import -keystore  cacerts -file D:/keys/aurora.crt -alias aurora

4),应用证书到Web服务器-Tomcat

打开tomcat目录的conf/server.xml文件,<Connector port="8443" 块去掉注释,并设置keystoreFilekeystorePass,(  C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf  )

 keystoreFile="D:/keys/aurora" keystorePass="admin123"

keystoreFile:在第一步创建的key存放位置

keystorePass:创建证书时的密码

5),定义域名

修改,C:\Windows\System32\drivers\etc中的hosts文件,

添加内容如下:

127.0.0.1  sso.wsria.com

问题:cHosts文件怎么修改

拖动hosts文件到桌面,改完再拖回去,就好了;

6),浏览

重启tomcat

浏览器输入,https://sso.wsria.com:8443/ 

错误:

https://sso.wsria.com:8443/  打不开

修改<Connector port="8443" 块中的protocol="org.apache.coyote.http11.Http11Protocol"

···

显示,该网站的安全证书不受信任!---正确

------------------------------------

2部署cas

cas-server-3.5.2\modules\cas-server-webapp-3.5.2.war,tomcat下解压;

修改文件夹名为cas

浏览器浏览,http://localhost:8080/cas

输入admin/admin点击登录(CAS默认的验证规则只要用户名和密码相同就通过),转入登录成功页面;

上面证书成功,则可以输入https://sso.wsria.com:8443/cas ,结果和上面的http://localhost:8080/cas同;

---------------------------------------------

3身份验证读取数据库的数据

tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml,

注释掉,---默认的不连接数据库的验证方法;

<bean 

class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

其后添加,---通过数据库,验证用户名密码方法

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

    <property name="dataSource" ref="dataSource"></property>

    <property name="sql" value="select pwd from admin where name=?"></property>

    </bean>

在结尾的</beans>前添加,---数据连接配置

  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

   <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>

   <property name="url"><value>jdbc:mysql:///website</value></property>

   <property name="username"><value>root</value></property>

   <property name="password"><value>chen</value></property>

</bean>

复制cas-server-3.4.3.1\modules\cas-server-support-jdbc-3.4.3.1.jarmysql驱动jar包到tomcat/webapp/cas/WEB-INF/lib目录

重启tomcat

http://localhost:8080/cas/login 输入用户名密码,数据库验证成功后,登录;

单点登录退出

https://sso.wsria.com:8443/cas/logout

美化CAS服务器界面

修改tomcat/webapp/cas\WEB-INF\view\jsp\default\ui下的jsp页面;

例:登录界面:casLoginView.jsp

登录成功:casGenericSuccess.jsp

登出界面:casLogoutView.jsp

-----------------------------------------------

4,配置客户端

用户登录请求---项目web.xml---重定向到认证系统---返回用户信息到项目---给出结果页面;

参考: http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/

加入jar

cas-client-core-3.2.1.jar  commons-logging-1.1.jar

Web.xml中添加内容:

<!-- 该过滤器负责用户的认证工作,必须启用它 -->

<filter>

<filter-name>CASFilter</filter-name>

<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>

<init-param>

<param-name>casServerLoginUrl</param-name>

<param-value>https://sso.wsria.com:8443/cas/login</param-value>

<!--这里的server是服务端的IP-->

</init-param>

<init-param>

<param-name>serverName</param-name>

<param-value>http://localhost:8080</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CASFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

上面的步骤1,2,3为前置

浏览器,浏览

https://sso.wsria.com:8443/cas/login?service=http%3A%2F%2Flocalhost%3A8080%2Fcas1%2F

转入认证登录页面,操作同3

5,从cas获取用户登录信息

参考咖啡兔代码;

6,多个项目

后置;

/

统一认证,初步实现先就这样,加深使用时再说;

另:咖啡兔的代码,可以下下来,学习下;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值