J2EE--SSO解决方案

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询。

第一节:单点登录简介

第一步:了解单点登录

SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口.

SSO的体系中有下面三种角色:

1) User(多个)

2) Web应用(多个)

3) SSO认证中心(一个)

SSO实现包含以下三个原则:

1)所有的登录都在SSO认证中心进行。

2) SSO认证中心通过一些方法来告诉Web应用当前访问用户究竟是不是通过认证的用户.

3) SSO认证中心和所有的Web应用建立一种信任关系.

CAS的基本原理CAS(Central Authentication Service)是Yale耶鲁大学发起的构建Web SSO的Java开源项目。

1.CAS术语解释:

SSO-Single Sign On单点登录

TGT-Ticket Granting Ticket用户身份认证凭证票据

ST-Service Ticket服务许可凭证票据

TGC-Ticket Granting Cookie存放用户身份认证凭证票据的cookie.

第二步:了解单点登录体系结构

1)CAS Server负责完成对用户信息的认证,需要单独部署,CAS Server会处理用户名/密码等凭证(Credentials).

2)CAS Client部署在客户端,当有对本地Web应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到CAS Server进行认证.

第三步:单点登录环境准备工作

1)cas-server-3.5.0-release.zip(CAS服务端)

2)cas-client-3.3.3-release.zip(CAS客户端)

3)apache-tomcat-7.0.40

4)cas-client-core-3.2.1.jar

5)cas-server-core-3.5.0.jar

6)cas-server-support-jdbc-3.5.0.jar

第二节:单点登录环境搭建与部署

第一步:环境部署

1.通过Java JDK生成证书三部曲

证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,本教程只是演示,所有用了JDK自带的证书生成工具keytool。

当然在实际项目中你可以到专门的证书认证中心购买证书。

使用JDK自带的keytool生成证书

第一步生成证书:

keytool -genkey -alias mycacerts -keyalg RSA -keystore C:/common/keys/keycard

注意:输入相关信息用于生成证书.其中名字与姓氏这一最好写你的域名,如果在单击测试你可以在C:WindowsSystem32driversetchosts文件中映射一个虚拟域名,

注意不要写IP。

第二步导出证书:

keytool -export -file C:/common/keys/keycard.crt -alias mycacerts -keystoreC:/common/keys/keycard

第三步导入到JDK安装目录证书:

keytool -import -keystore C:/"ProgramFiles"/Java/jdk1.6.0_32/jre/lib/security/cacerts -fileC:/common/keys/keycard.crt -alias mycacerts

2.解压cas-server-3.5.0-release.zip文件,

在cas-server-3.5.0-releasecas-server-3.5.0modules目录下找到cas-server-webapp-3.5.0.war文件并命名为cas.war,并复制到在Tomcat根目录的webapps目录下,

如下图:

3.修改host文件(C:WindowsSystem32driversetc)hosts文件中添加添加以下配置

127.0.0.1 jeesz.cn (配置自己的域名.)

注意:如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,可以不配置此项,下文有用到fast-web.cn,可以用相应PC机的IP代替

4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40confserver.xml)添加以下内容:

在server.xml文件中把

maxThreads="150" scheme="https"secure="true"

clientAuth="false" sslProtocol="TLS" />

修改成如下:

port="8443"

protocol="org.apache.coyote.http11.Http11Protocol"

maxThreads="150"

SSLEnabled="true"

scheme="https"

secure="true"

clientAuth="false"

sslProtocol="TLS"

keystoreFile="C:/common/keys/keycard"

keystorePass="xxxxxx "

ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"

/>

5.启动Tomcat服务,查看信息,(如果有报错,可以根据信息查找错误),打开浏览器,输入http://jeesz.cn:8080/cas如果出现以下界面,则代表CAS服务端配置成功。

注:这个是最简单的CAS服务,只要输入的用户名跟密码一样,就可以正常登陆,在我们实际开发中,这个验证因为跟数据库作比较,接下来,我们就配置数据库校验。

第二步:配置数据库验证

1.在apache-tomcat-7.0.2webappscasWEB-INF目录下找到deployerConfigContext.xml文件,找到如下代码:

添加下面代码:

这里sql属性是从user表中根据cas登陆名查找密码-->

2.增加数据源dataSource,

在deployerConfigContext.xml,(跟上面同一个文件)找到

,在下面添加如下代码:

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1:3306/sso根据自己的数据库URL地址-->

root根据自己的数据库用户名-->

根据自己的数据库密码-->

3.数据库添加用户表及数据(这里用的mysql),比如在mysql数据库中有t_user表

4.增加jar包,cas-client-core-3.2.1.jar、cas-server-core-3.5.0.jar、cas-server-support-jdbc-3.5.0.jar包拷贝到apache-tomcat-7.0.2webappscasWEB-INFlib目录下。

5.重启Tomcat,打开浏览器,输入http://jeesz.cn:8080/,输入数据库里的用户名和密码,如果出现如下界面,则配置成功。

现在我们的CAS服务端已经配置好了,接下来,我们配置客户端

第二节:配置自己的Web工程(客户端)

1.在host文件下,添加如下代码:

127.0.0.1 www.sso1.com

127.0.0.1www.sso2.com

注意:这个网址最好不要用互联网已经存在的域名,否则你将无法访问该地址。

如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,可以不配置此项,下文有用到www.sso1.com,www.sso2.com,可以用相应PC机的IP代替

1.在Tomcat根目录下创建一个sso1,sso2目录。如下如:

2在eclipse新建两个web工程,分别为sso1,sso2。

3在自己的Web工程里加入cas-client-core.jar,commons-logging-1.1.jar,(解压cas-client-3.2.0-release.zip,在cas-client-3.2.0-release.zipcas-client-3.2.0modules,找到该JAR包)

分别加入到sso1,sso2工程的lib里。

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
7月前
|
存储 API Windows
关于使用命令行 cf login 登录 SAP BTP CloudFoundry 环境的问题
关于使用命令行 cf login 登录 SAP BTP CloudFoundry 环境的问题
47 0
|
9月前
|
开发框架 .NET API
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
|
9月前
|
存储 JSON 开发框架
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (上)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用
|
存储 开发框架 NoSQL
微服务系列之授权认证(二) identity server 4
IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证授权框架。
|
容器
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【角色SSO】
阿里云与企业进行角色 SSO 时,阿里云是服务提供商(SP),而企业自有的身份管理系统则是身份提供商(IdP)。通过角色 SSO,企业可以在本地 IdP 中管理员工信息,无需进行阿里云和企业 IdP 间的用户同步,企业员工将使用指定的 RAM 角色来登录阿里云。 本文主要介绍 **AD FS的配置** , **角色SSO 配置和登录**, 如需了解 **用户SSO 配置和登录** 请参考 [
378 0
在AlibabaCloud上,如何使用AD FS进行SSO登录并完成在容器服务ACK集群中的身份验证之 【角色SSO】
|
数据安全/隐私保护
企业身份管理实战---RAM角色单点登录(SSO)
在上篇文章《企业身份管理--RAM用户SSO(单点登录)实战》中,我们介绍了企业账号到阿里云RAM账号SSO的原理和实战:企业员工在自己的员工系统认证完成后,可以通过SAML协议,按照自定的映射规则,通过浏览器免登到云端控制台。本文将介绍另外一种SSO方式:基于RAM角色的SSO。通过角色扮演的方式,访问云端控制台。
2281 0
企业身份管理实战---RAM角色单点登录(SSO)
|
JSON Java 数据格式
java B2B2C Springcloud电子商城系统-SSO单点登录之OAuth2.0登录流程(2)
上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证): 上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的...
1273 0
|
Java Spring 数据安全/隐私保护
(十二)Java springcloud B2B2C o2o多用户商城 springcloud架构-- SSO单点登录之OAuth2.0 登出流程(3)
上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程:完整项目的源码来源 技术支持2147775633
1822 0
|
JSON Java 数据格式
(十一)Java springcloud B2B2C o2o多用户商城 springcloud架构- - SSO单点登录之OAuth2.0登录流程(2)
根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证): 完整项目的源码来源 技术支持2147775633
1654 0