简单的单点登录实现过程及效果展示

一、实现过程
从用到的jar包文件夹的cas-server-3.3.1modules中找出cas.war放到tomcat/webapps下面(cas-server-webapp-3.3.1.war重命名即可)。

现在cas默认的server端已经有了,下面自己写2个客户端测试一下
MyEclipse里面新建web project:sso
新建类HelloWorldExample
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public final class HelloWorldExample extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("<title>Sample Application Servlet
Page</title>");
writer.println("</head>");
writer.println("<body bgcolor=white>");
writer.println("<table border=\"0\">");
writer.println("<tr>");
writer.println("<td>");
writer.println("<img src=\"images/tomcat.gif\">");
writer.println("</td>");
writer.println("<td>");
writer.println("<h1>Sample Application Servlet</h1>");
writer.println("This is the output of a servlet that is part of");
writer.println("the Hello, World application.");
writer.println("</td>");
writer.println("</tr>");
writer.println("</table>");
writer.println("</body>");
writer.println("</html>");
}
}
在web.xml文件添加CASFilter与servlet映射。

<?xml version="1.0" encoding="GB18030"?>
<web-app version="2.4"
xmlns="/xmls/j2ee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xmls/j2ee
/xmls/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-cla ss>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://:8443/cas/login</param-value> </init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name >
<param-value>https://:8443/cas/serviceValidate</param-val ue>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name> <param-value>:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
<servlet-class>servlet.HelloWorldExample</servlet-class> </servlet>
<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/servlet/HelloWorldExample</url-pattern> </servlet-mapping>
</web-app>
同样,再建一个web project : sso1
HelloWorldExample与web.xml直接从sso中copy即可。

二、效果展示:
输入网址:8080/sso/servlet/HelloWorldExample会自动跳转到以下页面(https://:8443/cas/login?service=http%3A%2F%%3A8080%2Fsso%2Fservle t%2FHelloWorldExample):
输入用户名和密码后(:8080/sso/servlet/HelloWorldExample?ticket=ST-1-FFcLusvRh9KSM3Jfaq5R-ca
s):
输入网址:8080/sso1/servlet/HelloWorldExample会自动跳转到以下页面(:8080/sso1/servlet/HelloWorldExample?ticket=ST-2-jokjNZqeYQ52P0hBGQeF-cas):。

合集下载

CAS_SSO单点登录实例详细步骤

CAS_SSO单点登录实例详细步骤

CAS SSO单点登录实例详细步骤原创作者:孙俊财第一步1、用keytool生成证书:命令:keytool -genkey -alias sjc -keyalg RSA -keysto re c:/store/mykey说明:这里-alias sjc 是表示生成的这个证书的别名叫sjc,-keyalg RSA 指的是采用的RSA算法,-keystore c:/store/mykey是指生成的证书存储的位置。

回车后会提示你输入keystore password,这可以自己定(这里输入sunjuncai,下面配tomcat时要用的),然后是一些个人信息及组织信息,可以轻松搞定。

注意:密码输入后,会让你输入其他信息,记得这里第一个姓名必须是服务器的域名这里我输入的是完整计算机名称:gaofeng.nmc.hamcc这里要注意如果不这样写就会报如下异常:java.io.IOException: HTTPS hostname wrong: should be <localhost>实战:C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc -keyalg RSA -keystorec:/store/mykey输入keystore密码:sunjuncai您的名字与姓氏是什么?[Unknown]:gaofeng.nmc.hamcc您的组织单位名称是什么?[Unknown]:上海神洲数港您的组织名称是什么?[Unknown]:网络优化您所在的城市或区域名称是什么?[Unknown]:郑州您所在的州或省份名称是什么?[Unknown]:河南该单位的两字母国家代码是什么[Unknown]:ZHCN= gaofeng.nmc.hamcc, OU=上海神洲数港, O=网络优化, L=郑州, ST=河南, C=ZH 正确吗?[否]:y输入<sjc>的主密码(如果和keystore 密码相同,按回车):2、创建证书后,就导出证书:命令:keytool -export -file c:/store/server.crt -alias sjc -keystore c:/store/mykey说明:从c:/store/mykey里取出证书入到c:/store/下,如果没有指定,就是存放在目录下C:\Documents and Settings\用户目录名\实战:C:\Documents and Settings\wangyoushi8>keytool -export -file c:/store/server.crt -alias sjc-keystore C:/store/mykey输入keystore密码:sunjuncai保存在文件中的认证<c:/store/server.crt>3、为客户端的JVM导入密钥:命令:keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc说明:注意:输入密码时密码为"changeit",这是默认密码.特别说明:这个D:/jdk1.5.0_12/jre/lib/security/cacerts是指JDK的JRE路径下的lib目录.至此,第一步完成。

单点登陆方案

单点登陆方案

单点登录方案概述随着互联网的快速发展和多样化的应用系统,用户常常面临着需要在不同的应用系统中进行登录的困扰。

为了解决这一问题,单点登录(Single Sign-On,简称SSO)技术应运而生。

单点登录方案是一种通过一次认证,用户可以访问多个应用系统的技术方案。

本文将介绍单点登录的原理、应用场景和实施方案。

一、单点登录原理单点登录的基本原理是在一个安全的身份认证中心(Identity Provider,简称IdP)完成用户的身份认证,并生成一个授权票据(Token),然后将该授权票据保存在用户的浏览器中的Cookie中。

当用户要访问其他应用系统时,这些应用系统会将用户重定向到IdP,并将授权票据发送给IdP进行验证。

验证通过后,IdP会生成一个新的授权票据并返回给应用系统,应用系统根据授权票据判断用户的合法性,从而实现用户的单点登录。

二、单点登录的应用场景1. 企业内部应用系统:在企业内部,往往存在多个不同的应用系统,如人力资源管理系统、财务管理系统、项目管理系统等。

使用单点登录方案可以避免用户需要在每个系统中单独登录的繁琐操作,提高了工作效率和用户体验。

2. 跨域网站应用:在互联网上,常常会有多个跨域网站应用需要进行集成,如在线购物网站、社交媒体平台等。

用户只需登录一次,就可以在所有的应用系统中自由切换,避免了重复输入账号和密码的困扰。

3. 第三方授权登录:许多网站提供使用第三方账号登录的功能,如使用微信账号登录某个网站。

通过单点登录方案,可以实现将第三方授权的账号映射到本地账号,方便用户进行登录。

三、单点登录实施方案1. 基于SAML的单点登录Security Assertion Markup Language (SAML)是一种基于XML的认证标准,是单点登录方案中最常用的协议之一。

基于SAML的单点登录方案主要包括以下步骤:(1)用户访问应用系统A,应用系统A 发现用户未登录,将用户重定向到IdP。

单点登录的实现原理

单点登录的实现原理

单点登录的实现原理嘿,你有没有想过,在这个信息爆炸的时代,我们每天要登录各种各样的系统,什么社交媒体账号、办公软件、网上银行等等。

每次登录都要输入用户名和密码,是不是感觉特别麻烦?要是有个魔法,能让我们只登录一次,就能畅游所有这些系统,那该多好啊!其实啊,这种魔法是存在的,它就叫单点登录(SSO)。

那单点登录到底是怎么实现这个神奇功能的呢?这就像是一场精心编排的舞蹈,每个参与者都有自己的角色。

我们先来说说身份提供者(IdP)。

这个身份提供者就像是一个大管家,它掌管着所有用户的身份信息。

比如说,在一个大型企业里,这个身份提供者可能是企业内部的一个专门的服务器。

它知道每个员工的用户名、密码,还有其他一些身份相关的信息。

当用户第一次登录某个系统的时候,这个系统就会把用户引导到身份提供者那里。

这就好比你去一个高档小区拜访朋友,门口的保安不会直接让你进去,而是把你带到物业管理处,让他们核实你的身份。

身份提供者会要求用户输入用户名和密码。

这一步很关键,就像是在一个神秘的城堡前,你要说出正确的口令才能进入。

如果用户输入的信息是正确的,身份提供者就会给用户颁发一个“通行证”。

这个“通行证”可不是普通的纸条,它是一种特殊的加密令牌,里面包含了用户的身份信息,但又经过了加密处理,就像一个神秘的密码盒,只有特定的系统才能解读它。

那这个“通行证”怎么在各个系统之间通用呢?这就涉及到各个系统和身份提供者之间的信任关系了。

各个系统就像是一个个独立的小王国,它们要信任身份提供者这个“大管家”。

当用户拿着“通行证”来到另一个系统的时候,这个系统会把“通行证”送到身份提供者那里进行验证。

这就好比你拿着物业管理处给的访客证去小区里的其他地方,每个地方的管理员都会打电话到物业管理处确认你的身份。

我有个朋友小明,他在一家跨国公司工作。

公司内部有很多不同的业务系统,以前每次登录不同的系统都要输入账号密码,他经常抱怨说这简直是浪费生命。

后来公司采用了单点登录系统。

单点登录的具体实现流程

单点登录的具体实现流程

单点登录(Single Sign-On)是指在多个应用系统中,用户只需要登录一次,即可访问所有系统。

这种技术已经被广泛应用于企业级应用系统和互联网应用系统中。

本文将介绍单点登录的具体实现流程。

第一步:用户登录
用户首先在一个应用系统中进行登录。

这个应用系统被称为“认证中心”(Authentication Center),它负责管理用户信息、进行用户认证和生成加密凭据。

第二步:凭据生成
认证中心在完成用户认证后,会生成一个加密凭据,称为“令牌”(Token)。

这个令牌包含了用户的身份信息和相关权限。

第三步:令牌验证
用户在访问其他应用系统时,这些应用系统需要验证令牌的有效性。

应用系统会将这个令牌发送给认证中心进行验证。

第四步:令牌解密
认证中心接收到令牌请求后,会通过内部机制解密令牌,并对用户身份信息进行关联。

如果令牌有效,则会给出验证通过的响应。

第五步:应用系统访问
在令牌验证通过后,应用系统可以根据令牌中的身份信息和权限信息来进行用户相关操作。

总结
单点登录是一种方便用户的重要技术,它将多个应用系统打通,实现了一次登录即可访问多个应用系统。

单点登录实现的主要流程包括,用户登录、凭据生成、令牌验证、令牌解密和应用系统访问。

通过单点登录这个技术手段,真正实现了方便快捷的用户体验。

单点登录设计方案

单点登录设计方案

单点登录设计方案单点登录(Single Sign-On, SSO)是一种身份认证技术,允许用户使用一个集中的认证系统登录多个相关但独立的应用系统。

下面是一个针对单点登录的设计方案:1.集中认证服务:设计一个集中的认证服务,负责接收用户的登录请求,并验证用户的身份。

该认证服务可以由一个独立的认证服务器来实现。

认证服务需要存储用户的认证信息,如用户名,密码等。

2.认证服务与应用系统的集成:为了实现单点登录,需要将认证服务与各个应用系统进行集成。

可以在每个应用系统中添加一个登录页面,用户在输入用户名和密码后,登录请求被发送至认证服务进行身份验证。

认证服务返回认证结果,如果成功,用户可以访问应用系统;如果失败,用户需要重新输入用户名和密码。

3.统一登录凭证:为了简化用户的登录流程,可以引入统一登录凭证(Token)的概念。

用户在登录成功后,认证服务可以生成一个唯一的Token,将其返回给用户。

用户在访问其他应用系统时,可以使用该Token进行认证,而无需重新输入用户名和密码。

Token可以包含用户的身份信息和时间戳等,以增加安全性。

4.应用系统与认证服务的信任关系:为了确保认证服务只向信任的应用系统提供服务,可以在认证服务和应用系统之间建立信任关系。

可以使用加密算法对认证请求和返回结果进行加密和签名,以确保请求的来源和结果的完整性。

5.自动登录:为了提高用户体验,可以在用户第一次登录成功后,在用户的终端设备上保存Token。

下次用户访问应用系统时,可以自动使用保存的Token进行登录,而无需再次输入用户名和密码。

这需要提供注销功能,以用于用户登出或更换终端设备。

6.单点注销:在单点登录的设计中,需要考虑用户退出和注销的问题。

用户在一个应用系统登出后,认证服务需要通知其他应用系统,使其也能将用户注销。

可以使用发布-订阅模型来实现这个功能。

总之,单点登录设计方案包括集中认证服务、统一登录凭证、应用系统与认证服务的信任关系、自动登录和单点注销等功能。

单点登录的几种实现代码

单点登录的几种实现代码

单点登录的几种实现方式什么是单点登录?单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户只需登录一次,即可访问多个相互信任的应用程序或系统。

在传统的身份验证方式中,用户需要为每个应用程序输入用户名和密码,而SSO则通过一次登录即可实现用户在多个应用程序中的身份验证。

单点登录的实现可以简化用户的登录流程,提高用户体验,同时也方便了企业管理用户权限和安全性。

下面将介绍几种常见的单点登录实现方式。

1. 基于Cookie的单点登录基于Cookie的单点登录是最常见的实现方式之一。

该方式的原理是在用户登录成功后,将用户的身份信息保存在Cookie中,并在用户访问其他应用程序时,将Cookie中的身份信息发送给应用程序进行验证。

实现步骤如下:1.用户访问应用程序A,并尚未登录。

2.用户被重定向到登录页面,输入用户名和密码。

3.应用程序A验证用户的身份,登录成功后生成一个唯一的标识符(如Session ID),将该标识符保存在Cookie中,并发送给用户的浏览器。

4.用户访问应用程序B。

5.应用程序B检查用户的请求中是否包含Cookie,并解析出其中的标识符。

6.应用程序B使用标识符向应用程序A发送请求,验证标识符的有效性。

7.应用程序A返回验证结果给应用程序B。

8.应用程序B根据验证结果决定是否允许用户访问。

基于Cookie的单点登录实现简单,但也存在一些问题。

例如,Cookie可能被篡改或盗取,导致安全性问题。

同时,由于Cookie的大小有限制,如果用户访问的应用程序过多,可能会导致Cookie过大,影响性能。

2. 基于Token的单点登录基于Token的单点登录是一种无状态的实现方式,不需要在服务器端保存用户的登录状态。

该方式的原理是用户在登录成功后,服务器生成一个令牌(Token)并返回给用户,用户在后续的请求中携带该令牌进行身份验证。

实现步骤如下:1.用户访问应用程序A,并尚未登录。

单点登录的三种常用实现方式

单点登录的三种常⽤实现⽅式基础知识:单点登录:在微服务或者分布式情况下,我们的服务器不⽌⼀个需要⽤户在⼀个JVM上执⾏登录逻辑以后,其他的服务器JVM都认可已经登录的⾝份,这就是--->单点登录。

session原理(存放在在服务器端,每次请求会重置时间)当客户端发送⼀个请求的时候服务器端会判断是否有⼀个名为jsesion的cookie如果没有,服务端就会创建⼀个名为jsession的cookie,cookie的值为uuid,同时会创建⼀个uuid为key的session被创建出来,同时会把名为jsession的cookie返回到客户端如果客户端存在cookie且没有超时,再次请求的时候就直接会将名为jsession的cookie返回到请求头中.cookie原理(存放在客户端,每次请求不会重置时间)客户在⼀个项⽬中登录之后其他与之有关联的项⽬就不需要再进⾏重复登录1.利⽤session⼴播机制实现参与集群的每个节点的Session状态都被复制到集群中的其他所有节点上,⽆论何时,只要Session发⽣改变,Session数据都要重新被复制Tomcat、JBoss、was都提供了这样的功能,其中Tomcat采⽤集群节点⼴播复制,JBoss采⽤配对复制机制优点:每个节点都复制⼀份Session,⼀个节点出现问题时其它节点可以接替它的⼯作缺点:节点间进⾏Session同步会占据不少系统资源,整体性能随着集群节点数的增加⽽急剧下降2.使⽤cookie+redis实现(1)客户端第⼀次登陆时,通过服务端产⽣cookie和⼀个与之对相应的session(2)将第⼀次登录产⽣的cookie和User对象(登录所需信息),以key-value的形式存储在Redis中(3)当客户端再次访问另外需要登录操作的页⾯时,将该客户端的cookie拿到Redis中进⾏⽐对,如果存在,则视为已登录(4)因为session是存在有效期的,所以可以在Redis中设置与之对相应的有效时间3.使⽤token实现(1)构SSO服务站点(2)客户端第⼀次登录时在SSO站点获取登陆凭证(3)客户端拿着登陆凭证去服务端登录(4)服务端拿着客户端的登陆凭证去寻找SSO服务站点进⾏校验(5)SSO校验成功并通知服务端该客户⼀登录,可以进⾏下⼀步操作。

单点登录方案

单点登录方案在当今数字化时代,人们经常需要使用多个不同的应用程序和系统,而每个应用程序和系统都需要一个独立的登录凭据。

然而,这种情况会给用户带来不便,他们需要记住多个用户名和密码,而且还要经常切换不同的应用程序和系统。

为了解决这一问题,单点登录(Single Sign-On,简称SSO)方案被广泛采用。

一、什么是单点登录?单点登录是一种身份验证机制,允许用户使用一个集中的登录凭据(如用户名和密码)访问多个应用程序和系统。

用户只需通过一次身份验证,即可无需再次输入凭据就能访问其他应用程序和系统。

这极大地提高了用户体验,简化了登录流程。

二、单点登录的工作原理单点登录的工作原理可以简单概括为以下几个步骤:1. 用户访问一个需要身份验证的应用程序或系统,并输入其登录凭据。

2. 应用程序会发送身份验证请求给单点登录系统,请求验证用户的凭据。

3. 单点登录系统验证用户的凭据,并在验证通过后生成一个安全的令牌(Token)。

4. 单点登录系统将令牌返回给应用程序,并允许用户访问。

5. 当用户尝试访问其他应用程序或系统时,他们无需重新输入凭据,而是将令牌发送给单点登录系统进行验证。

6. 单点登录系统验证令牌,并在通过验证后授权用户访问其他应用程序和系统。

三、单点登录的优势单点登录方案带来了许多优势,如下所示:1. 提高用户体验:用户只需一次登录就能访问多个应用程序和系统,省去了多次输入凭据的麻烦,大大提高了用户体验。

2. 提高安全性:使用单点登录方案可以集中管理用户的身份验证和授权,减少了密码泄露和风险。

此外,单点登录系统还可以实施强化的安全措施,如多因素身份验证。

3. 提高工作效率:员工可以更快速地访问所需的应用程序和系统,无需反复登录,提高了工作效率和生产力。

4. 降低管理成本:单点登录方案使得身份验证和授权管理集中化,减少了维护多个应用程序和系统的成本和工作量。

四、单点登录的实施方式实施单点登录可以采用多种技术和协议,例如基于令牌的SSO、基于代理的SSO和基于标准协议的SSO。

单点登录系统的设计与实现

单点登录系统的设计与实现
随着互联网的发展,人们在不同的网站和应用上拥有很多个账号和密码,为了方便用户的使用,单点登录系统(Single Sign-On,简称SSO)应运而生。

单点登录系统是一个在多个应用系统中对用户进行身份认证和授权的解决方案,用户只需要登录一次,就可以在不同的系统中访问受限资源。

设计与实现一个高效可靠的单点登录系统是一个复杂的任务,下面是一个大致的设计框架。

1.用户身份认证
用户访问一个应用系统时,首先需要进行身份认证。

常用的认证方式包括用户名/密码认证、短信验证码认证、第三方登录认证等。

在单点登录系统中,可以选择其中一种或多种认证方式。

2.生成令牌
认证成功后,单点登录系统会为用户生成一个令牌。

令牌包含用户的身份信息、访问权限等相关信息。

令牌可以是一个加密的字符串,也可以是一个包含身份信息的加密cookie。

3.令牌管理
4.令牌传递
5.会话管理
6.安全性考虑
7.日志与监控
总结:单点登录系统的设计与实现是一个复杂而庞大的系统工程,上述只是一个大致的设计框架。

在实际的设计和实现中,还需要考虑更多的细节和问题,如高可用性、性能优化、跨域访问等。

设计和实现一个可靠且安全的单点登录系统需要综合考虑系统的需求、用户体验和安全性,是一个综合性的挑战。

单点登录实现

1 引言企业在信息化建设过程中,由于经常采用逐步信息化的方式,因此会造成企业内部各个应用系统的用户目录不完全兼容,各应用系统相互孤立,形成“信息孤岛”。

信息孤岛的存在,使得信息系统用户需要做重复的登录。

因此实际中,需要一个统一的用户登录管理系统平台,来实现用户统一身份验证。

用户登录到某一应用系统(通常是门户站点,如办公自动化系统)后,当需要访问其他应用系统时,不必登录就可以直接进入应用系统。

单点登录系统平台采用统一的用户信息数据库,实现用户统一验证。

从用户的角度只需进行一次登录就可实现全局访问;从管理员的角度,能够记录用户登录各个系统的日志信息,方便进行统计分析。

2 单点登录的实现原理2.1 单点登录的一般模型单点登录模型,一般由三部分构成,分别是:用户、身份提供者和服务提供者,如图1所示。

(1)用户是指通过浏览器来使用应用服务的个体。

(2)身份提供者是指对个体进行身份验证的服务提供者。

(3)服务提供者是指为用户进行应用服务的具体应用服务提供者。

单点登录的工作原理是:用户首先在身份提供者那里注册身份;当用户进行单点登录时,在身份提供者处登录,进行身份验证,由身份提供者为用户标记登录信息;当访问其他的服务提供者时,被访问的服务提供者首先直接与身份提供者进行交互,确定该用户是否已进行单点登录,从而确定允许该用户来访问自己提供的服务。

2.2 单点登录的重要概念2.2.1 单点登录点理想的情况是用户通过任何应用系统都能进行SSO(Single Sign-on),这对于基于Web的系统是可行的。

这种单一的登录点在整个系统的设计中是惟一认证用户的地方,由登录点将SSO token(单点登录标志)(针对不同的C/S,B/S应用可能还需要传递用户名,口令)传递给应用系统,应用系统利用SSOtoken进行用户已认证的验证。

将这个单一的登录点称为SSO Entry(单点登录点)。

2.2.2 对原有应用系统的修改并不是任何系统都能够使用SSO,只有那些符合SSO规范,使用SSO API的应用系统才具有SSO的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档