当前位置:首页 » 编程语言 » java单点登录实现

java单点登录实现

发布时间: 2023-06-14 20:06:29

java 单点登陆支持多用户体系吗,不同系统的不同用户表,可以实现单点登陆吗

肯定是可以的,但是工作量不小。
思路如下:
1、把所有系誉早统的用户同步到一个数据库中,或者和一个中心库绝虚粗做好对应关系。
2、在单点系统中对于输入的用户名和密码在中心库进行验证,或者根据配置到各自系统去验证。
3、每个系统增加过滤器,在访问时首先向单点系统并镇去确认是否已登录以及登录的信息。

❷ JavaWeb基于AD域的单点登录怎么做

avaWeb基于AD域的单点登录

  1. AD域的用户和系统的用户名称一样

  2. AD验证正确,连接我们的数据库,取出密码(MD5加密过的),将用蠢耐户名和密码交给我们的系统验证,这时由于我们系统采带衫春用了md5加密塌大,这时直接去掉再次加密,因为已经加密过了。

  3. 这样只要通过AD域验证,就直接去取md5加密的密码,然后那正确的用户和密码去验证保证了能登陆我们的系统。

❸ 在java中如何实现单点登陆

单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

packageDesktopSSO;

importjava.io.*;
importjava.net.*;
importjava.text.*;
importjava.util.*;
importjava.util.concurrent.*;

importjavax.servlet.*;
importjavax.servlet.http.*;


{

;
;
Stringcookiename="WangYuDesktopSSOID";
Stringdomainname;

publicvoidinit(ServletConfigconfig)throwsServletException{
super.init(config);
domainname=config.getInitParameter("domainname");
cookiename=config.getInitParameter("cookiename");
SSOIDs=newConcurrentHashMap();
accounts=newConcurrentHashMap();
accounts.put("wangyu","wangyu");
accounts.put("paul","paul");
accounts.put("carol","carol");
}

protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
PrintWriterout=response.getWriter();
Stringaction=request.getParameter("action");
Stringresult="failed";
if(action==null){
handlerFromLogin(request,response);
}elseif(action.equals("authcookie")){
StringmyCookie=request.getParameter("cookiename");
if(myCookie!=null)result=authCookie(myCookie);
out.print(result);
out.close();
}elseif(action.equals("authuser")){
result=authNameAndPasswd(request,response);
out.print(result);
out.close();
}elseif(action.equals("logout")){
StringmyCookie=request.getParameter("cookiename");
logout(myCookie);
out.close();
}
}

.....

}

❹ Java实现单点登录(多域)

代码不能帖给你 不好意思....

使用 CAS-server组件 一般的,单点登录都是使用LDAP数据库

我之前给学校做过一个基于SOA的校园统一管理构建 使用的就是这套配置 不错呀不错 呵呵~~

单点登录的重点是:无论两个网站地域和服务器是否分离,只要他们服务器上面都有你单点登录服务器上的证书存根即可... 所以不需要关心什么域名之类的东西 只要证书存根在每个网站上 一切好说

你的思路有些问题:单点登录并不是对网站cookies的传递 它是基于https的一种安全机制的东东 也就是ca证书 如果用cookies传递的话,你就会遇到跨网站时cookies共享问题,这是个思路死角

❺ 关于javaWeb单点登录

描述:在A系统登录后,点击A系统的某个模块,登录到B系统。
解决思路:在B系统的后台代码获取B系统的用户名和密码正山陪,当点击A系统的某个模块时将用户名和密码通过url登录到B系统。
描述:点击A系统的退出按钮,同时退出B系统;
解决思路: 
在A系统的带有退出按钮唯亩的jsp页面,找到退出方法,将退出成功后执行的方法改为退出B系统。
描述:找到B系统的登录界面,通过js,执行页面加载完毕后执行
解决方案:Window.onload=function 在执行方法中执行A系统的登录接口,即可完成单点退出。
总结:举蠢A和B是两个工程,那就让A和B一个做客户端,一个做服务端,服务端可以把服务发布出来,客户端进行调用,就可以了啊,分布式开发。

❻ java web应用如何实现单点登录

  • 实现方式一:父域 Cookie

  • 实现方式二:认证中心

  • 实现方式三:LocalStorage跨域

  • 补充:域名分级

在 B/S 系统中,登录功能通常都是基于 Cookie 来实现的。当用户登录成功后,一般会将登录状态记录到 Session 中,或者是给用户签发一个 Token,无论哪一种方式,都需要在客户端保存一些信息(Session ID 或 Token ),并要求客户端在之后的每次请求中携带它们。在这样的场景下,使用 Cookie 无疑是最方便的,因此我们一般都会将 Session 的 ID 或 Token 保存到 Cookie 中,当服务端收到请求后,通过验证 Cookie 中的信息来判断用户是否登录 。


单点登录(Single Sign On, SSO)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。举例来说,网络贴吧和网络地图是网络公司旗下的两个不同的应用系统,如果用户在网络贴吧登录过之后,当他访问网络地图时无需再次登录,那么就说明网络贴吧和网络地图之间实现了单点登录。


单点登录的本质就是在多个应用系统中共享登录状态。如果用户的登录状态是记录在 Session 中的,要实现共享登录状态,就要先共享 Session,比如可以将 Session 序列化到 Redis 中,让多个应用系统共享同一个 Redis,直接读取 Redis 来获取 Session。


当然仅此是不够的,因为不同的应用系统有着不同的域名,尽管 Session 共享了,但是由于 Session ID 是往往保存在浏览器 Cookie 中的,因此存在作用域的限制,无法跨域名传递,也就是说当用哪吵户在 app1.com 中登录后,Session ID 仅在浏览器访问 app1.com 时才会自动在请求头中携带,而当浏览器访问 app2.com 时,Session ID 是不会被带过去的。实现单点耐缺登录的关键在于,如何让 Session ID(或 Token)在多个域中共享。


实现方式一:父域 Cookie

在将具体实现之前,我们先来聊一聊 Cookie 的作用域。


Cookie 的作用域由 domain 属性和 path 属性共同决定。domain 属性的有效值为当前域或其父域的域名/IP地址,在 Tomcat 中,domain 属性默认为当前域的域名/IP地址。path 属性的有效值是以“/”开头的路径,在 Tomcat 中,path 属性默认为当前 Web 应用的上下文路径。


如果将 Cookie 的 domain 属性设置为当前域的父域,那么就认为它是父域 Cookie。Cookie 有一个特点,即父域中的 Cookie 被子域所共享,换言之,子域会自动继承父域中的Cookie。


利用 Cookie 的这个特点,不难想到,将 Session ID(或 Token)保存到父域中不就行了。没错,我们只需要将 Cookie 的 domain 属性设置为父域的域名(主域名),同时将 Cookie 的 path 属性设置为根路径,这样所有的子域应用就都可以访问到这个 Cookie 了。不过这要求应用系统的域名需建立在一个共同的主域名之下,如 tieba..com 和 map..com,它们都建立在 .com 这个主域名之下,那么它们就可以通过这种方式来实现单点登录。


总结:此种实现方式比较简单,但不支持跨主域名。


实现方式二:认证中心

我们可以部署一个认证中心,认证中心就是一个专门负责处理登录请求的独立的 Web 服务。


用户统一在认证中心进行登录,登录成功后,认证中心记录用户的登录状态,并将 Token 写入 Cookie。(注意这个 Cookie 是认证中心的,应用系统是访问不到的。)


应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系昌缓辩统中尚未登录,那么就将页面跳转至认证中心。由于这个操作会将认证中心的 Cookie 自动带过去,因此,认证中心能够根据 Cookie 知道用户是否已经登录过了。如果认证中心发现用户尚未登录,则返回登录页面,等待用户登录,如果发现用户已经登录过了,就不会让用户再次登录了,而是会跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统。


应用系统拿到 Token 之后,还需要向认证中心确认下 Token 的合法性,防止用户伪造。确认无误后,应用系统记录用户的登录状态,并将 Token 写入 Cookie,然后给本次访问放行。(注意这个 Cookie 是当前应用系统的,其他应用系统是访问不到的。)当用户再次访问当前应用系统时,就会自动带上这个 Token,应用系统验证 Token 发现用户已登录,于是就不会有认证中心什么事了。


这里顺便介绍两款认证中心的开源实现:


Apereo CAS 是一个企业级单点登录系统,其中 CAS 的意思是”Central Authentication Service“。它最初是耶鲁大学实验室的项目,后来转让给了 JASIG 组织,项目更名为 JASIG CAS,后来该组织并入了Apereo 基金会,项目也随之更名为 Apereo CAS。


XXL-SSO 是一个简易的单点登录系统,由大众点评工程师许雪里个人开发,代码比较简单,没有做安全控制,因而不推荐直接应用在项目中,这里列出来仅供参考。


总结:此种实现方式相对复杂,支持跨域,扩展性好,是单点登录的标准做法。


实现方式三:LocalStorage 跨域

前面,我们说实现单点登录的关键在于,如何让 Session ID(或 Token)在多个域中共享。


父域 Cookie 确实是一种不错的解决方案,但是不支持跨域。那么有没有什么奇淫技巧能够让 Cookie 跨域传递呢?


很遗憾,浏览器对 Cookie 的跨域限制越来越严格。Chrome 浏览器还给 Cookie 新增了一个 SameSite 属性,此举几乎禁止了一切跨域请求的 Cookie 传递(超链接除外),并且只有当使用 HTTPs 协议时,才有可能被允许在 AJAX 跨域请求中接受服务器传来的 Cookie。


不过,在前后端分离的情况下,完全可以不使用 Cookie,我们可以选择将 Session ID (或 Token )保存到浏览器的 LocalStorage 中,让前端在每次向后端发送请求时,主动将 LocalStorage 的数据传递给服务端。这些都是由前端来控制的,后端需要做的仅仅是在用户登录成功后,将 Session ID (或 Token )放在响应体中传递给前端。


在这样的场景下,单点登录完全可以在前端实现。前端拿到 Session ID (或 Token )后,除了将它写入自己的 LocalStorage 中之外,还可以通过特殊手段将它写入多个其他域下的 LocalStorage 中。

————————————————

版权声明:本文为CSDN博主“风水道人”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jcmj123456/article/details/114296482

前端通过 iframe+postMessage() 方式,将同一份 Token 写入到了多个域下的 LocalStorage 中,前端每次在向后端发送请求之前,都会主动从 LocalStorage 中读取 Token 并在请求中携带,这样就实现了同一份 Token 被多个域所共享。


总结:此种实现方式完全由前端控制,几乎不需要后端参与,同样支持跨域。


补充:域名分级

从专业的角度来说(根据《计算机网络》中的定义),.com、.cn 为一级域名(也称顶级域名),.com.cn、.com 为二级域名,sina.com.cn、tieba..com 为三级域名,以此类推,N 级域名就是 N-1 级域名的直接子域名。


从使用者的角度来说,一般把可支持独立备案的主域名称作一级域名,如 .com、sina.com.cn 皆可称作一级域名,在主域名下建立的直接子域名称作二级域名,如 tieba..com 为二级域名。

❼ 单点登录,java实现

可以直接通过玉符科技IDAAS平台来实现单点登录,支持所有的标准协议,如果是老旧或者自研的系统,也有SDK去适配所有的开发语言,不止是java。

玉符单点登录

❽ java单点登录用过滤器怎么实现

1、在普通站点A,B上配置过滤器,如果访问到A的页面时,先访问本地SESSION看是否登录,如果没有,则访问SSO看是否登录,如果没有则转到公共登录界面
2、公共登录界面登录完以后写SSO的SESSION,并通过地址栏返回给A登录的用户名
3、A写本地SESSION,完成登录过程。

4、当访问B应用时,先访问本地SESSION,未登录,则同样跳转到SSO,SSO取到本地SESSION的用户名,返回给B已登录。B写本地SESSION。完成登录过程。

5、A登出时,先杀本地SESSION,调用SSO的杀全局SESSION方法,SSO清空本地SESSION,同时也清空应用B的SESSION,完成单点登出。

热点内容
我的世界服务器授权指令 发布:2025-02-12 23:30:13 浏览:596
电脑服务器号在哪里找 发布:2025-02-12 23:22:29 浏览:12
linux查看系统是32位 发布:2025-02-12 23:17:29 浏览:989
从数据库中随机取数据库数据 发布:2025-02-12 23:17:25 浏览:878
ftp下载软件安卓 发布:2025-02-12 23:07:24 浏览:567
c搜索算法 发布:2025-02-12 23:05:47 浏览:862
返回服务器地址 发布:2025-02-12 23:05:45 浏览:181
我的世界推荐在线服务器 发布:2025-02-12 23:00:18 浏览:462
什么是解压目录 发布:2025-02-12 22:49:24 浏览:981
惠普电脑选购要考虑哪些因素配置 发布:2025-02-12 22:43:50 浏览:223