- 浏览: 972586 次
- 性别:
- 来自: 山西
文章分类
最新评论
-
白小默:
你好 可以提供下源码DEMO吗,不知为何,我导出来的excel ...
jxls 使用模板文件导出生成excel -
zkzqzzz:
博主威武!
让微信二维码扫描您的APK -
zkzqzzz:
感谢博主 原来那些类都不是必须的 或者自己写!!博主真棒 ...
抢红包插件实现原理浅析 -
zkzqzzz:
博主 请问你的其他类在哪里呢?
抢红包插件实现原理浅析 -
zkzqzzz:
其他类在哪呢?
抢红包插件实现原理浅析
SSO:单点登录.一般是系统之间整合需要解决的一个问题.例如你之前做了个BBS或者一个CMS的系统.你在完成一个全新系统时候需要用到BBS这个系统的话..你就可能面临一个整合的问题.(除非你自己决定从新做个BBS上去) 对于我们已有的WEB应用中的用户,若该用户已经登陆,并通过 联结迁移到BBS页面时,BBS要能够识别该用户已经登陆(不需要二次登陆)才不会让用户感到别扭(对用户来说,就好像使用的是同一个系统似的)。
下面看下Jforum对于SSO的处理.
首先找到SSO处理所有类:net.jforum.sso下的SSO(需要实现的接口) SSOUtils(工具类)类;net.jforum.ControllerUtils;net.jforum.JForum
首先从xml中可以看到net.jforum.JForum这是整个系统一个核心的servlet.所以所有访问将通过该实体类
1.当一个用户访问JForum时.刷新session
ControllerUtils utils = new ControllerUtils(); // 刷新session utils.refreshSession();
2.进入ControllerUtils的refreshSession()
- public void refreshSession()
- {
- UserSession userSession = SessionFacade.getUserSession();//获取系统用户session
- RequestContext request = JForumExecutionContext.getRequest();//获取封装后的request值
- if (userSession == null) {//如果userSession不存在话
- userSession = new UserSession();
- userSession.registerBasicInfo();//初始化基础信息
- userSession.setSessionId(request.getSessionContext().getId());
- userSession.setIp(request.getRemoteAddr());
- SessionFacade.makeUnlogged();//清除登录session的值
- if (!JForumExecutionContext.getForumContext().isBot()) {//如果不是机器登录
- // Non-SSO authentications can use auto login
- /**
- * 要启用sso功能话需要配置SystemGlobals.properties的中
- * authentication.type的值=ConfigKeys.TYPE_SSO
- */
- if (!ConfigKeys.TYPE_SSO.equals(SystemGlobals.getValue(ConfigKeys.AUTHENTICATION_TYPE))) {
- if (SystemGlobals.getBoolValue(ConfigKeys.AUTO_LOGIN_ENABLED)) {
- this.checkAutoLogin(userSession);
- }
- else {
- userSession.makeAnonymous();
- }
- }
- else {
- this.checkSSO(userSession);//检测sso
- }
- }
- SessionFacade.add(userSession);//将userSession设置到SessionFacade
- }
- else if (ConfigKeys.TYPE_SSO.equals(SystemGlobals.getValue(ConfigKeys.AUTHENTICATION_TYPE))) {//是否启用sso
- SSO sso;
- try {
- /**
- * ConfigKeys.SSO_IMPLEMENTATION
- * 取决你用什么方式实现SSO 可以是Cookies形式或者JDAP等形式而相应完成的实现类需要在SystemGlobals.properties配置 sso.implementation = 实现类完整路径
- */
- sso = (SSO) Class.forName(SystemGlobals.getValue(ConfigKeys.SSO_IMPLEMENTATION)).newInstance();
- }
- catch (Exception e) {
- throw new ForumException(e);
- }
- // If SSO, then check if the session is valid
- if (!sso.isSessionValid(userSession, request)) {//session值是否通过SSO验证.
- SessionFacade.remove(userSession.getSessionId());
- refreshSession();
- }
- }
- else {
- SessionFacade.getUserSession().updateSessionTime();
- }
- }
- protected void checkSSO(UserSession userSession)
- {
- try {
- /**
- * ConfigKeys.SSO_IMPLEMENTATION
- * 中对应SystemGlobals.properties配置中SSO的实现类
- * 取决你用什么方式实现SSO
- * 可以是Cookies形式或者JDAP等形式 sso.implementation = 实现类完整路径
- */
- SSO sso = (SSO) Class.forName(SystemGlobals.getValue(ConfigKeys.SSO_IMPLEMENTATION)).newInstance();
- /**
- * sso检测用户.返回为用户的值
- */
- String username = sso.authenticateUser(JForumExecutionContext.getRequest());
- /**
- * 若返回了一个null,则设置为“Anonymous” (设置匿名用户)
- * checkAutoLogin()将调用makeAnonymous()里面设置的匿名cookies值
- * 若一个“Anonymous”用户试图访问权限以外的页面,
- * JForum将根据SSO的设置导航到登陆页面,
- * 同时传递给一个登陆成功后应该迁移到的地址参数给login页面。
- */
- if (username == null || username.trim().equals("")) {
- userSession.makeAnonymous();
- }
- /**
- * 若返回了一个不为空的username时,
- * JForum将会检查是否匹配JForum数据库的userid。
- * 若没有匹配的userid,JForum将动态加以创建
- *
- */
- else {
- SSOUtils utils = new SSOUtils();
- if (!utils.userExists(username)) {//如果用户不存在进行添加
- SessionContext session = JForumExecutionContext.getRequest().getSessionContext();
- String email = (String) session.getAttribute(SystemGlobals.getValue(ConfigKeys.SSO_EMAIL_ATTRIBUTE));
- String password = (String) session.getAttribute(SystemGlobals.getValue(ConfigKeys.SSO_PASSWORD_ATTRIBUTE));
- if (email == null) {
- email = SystemGlobals.getValue(ConfigKeys.SSO_DEFAULT_EMAIL);
- }
- if (password == null) {
- password = SystemGlobals.getValue(ConfigKeys.SSO_DEFAULT_PASSWORD);
- }
- utils.register(password, email);//JForum设置该user为登陆状态
- }
- this.configureUserSession(userSession, utils.getUser());
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- throw new ForumException("Error while executing SSO actions: " + e);
- }
- }
发表评论
-
java通过sftp JSch 上传文件下载文件查看文件目录,测试可用
2019-12-19 18:19 972基于maven ... -
服务器之间的 zip 文件定时传送
2019-12-19 10:28 5191、expect 安装 将expect和tcl的软 ... -
Java/web/jsp根据pdf模板生成荣誉证书PDF文件
2019-07-19 14:48 9551.前言 最近博主在 ... -
Java生成荣誉证书PDF文件
2019-07-19 13:08 1380Java生成荣誉证书PD ... -
百度云API刷脸
2019-07-13 11:41 631刷脸登录是基于人工智能、生物识别、3D传感、大数据风控技术, ... -
maven--maven配置多个源文件夹
2019-06-13 21:32 930需求 Maven 为我们提供了一致的项目目录配置(源文件 ... -
绿盟检测出“检测到目标URL存在http host头攻击漏洞”如何解决
2019-06-09 10:00 1001绿盟检测出“检测到目标URL存在http host头攻击漏 ... -
Linux安装apache及其简单的反向代理配置
2019-06-07 09:06 637Apache简介 Apache HTTP Se ... -
Linux二进制安装apache2.4.25
2019-06-07 09:06 714Linux二进制安装apache2.4. ... -
weblogic配置https,http自动跳转转https,ssl
2019-05-21 09:44 942最近,公司要求将http ... -
bootstrap-table组合表头
2019-03-06 10:04 913bootstrap-table组合表头 ... -
[Weblogic]如何清理缓存
2019-03-04 15:23 857[Weblogic]如何清理缓存 ... -
Guns第十节Swagger的讲解
2019-01-23 16:51 6422018年08月01日 15:54:30 ze ... -
Anaconda详细安装使用教程
2019-01-22 15:07 613关注微信公众号【Mi ... -
Windows系统下Eclipse上搭建Python开发环境
2019-01-22 15:00 328Windows系统下Eclipse上搭 ... -
Python 3.6 中使用pdfminer解析pdf文件
2019-01-22 14:50 935所使用python环境为最新 ... -
Python提取PDF内容(文本、图像、线条等)
2019-01-22 14:43 7545使用Python抽取PDF文件内 ... -
用python解析pdf中的文本与表格【pdfplumber的安装与使用】
2019-01-22 14:40 1533我们接触到的很多文档资料都是以pdf格式存在的,比如:论文, ... -
java实现PDF转HTML
2019-01-21 10:14 923java实现PDF转HTML 问题场景: ... -
JAVA PDFBOX 读取PDF表格
2019-01-18 17:39 2936最近在帮公司做工具,需要读取PDF中表格的数据。网上查了, ...
相关推荐
单点登录(Single Sign-On,简称SSO)是一种网络身份验证技术,允许用户在一次登录后,无需再次输入凭证即可访问多个相互关联的应用系统。在IT领域,它极大地提升了用户体验和安全性,尤其对于大型企业或组织,管理...
sso单点登录ppt.ppt
SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。在企业信息化系统集成(EIA)中,SSO是提升用户体验和安全性的重要技术。微软作为...
因为公司要实现SSO单点登录的效果,最近在网上找了一些资料,但是都没有好用的, 所以自己用PHP 使用TP5.0 实现了SSO单点登录,可以跨多个域名。 下载后在本地配置好 A,B,C 3个网站,就可以模拟效果了。
SSO单点登录
SSO(Single Sign-On)单点登录是一种网络访问控制机制...对于理解SSO单点登录解决方案,提升企业内部系统的用户体验和安全管理具有重要价值。通过深入学习这些资料,可以掌握如何设计和实施一个高效、安全的SSO系统。
标题 "sso.rar_IIS ad java_iis_sso_sso IIS_单点登录" 提供的信息表明,这个压缩包包含的是关于IIS(Internet Information Services)与Java环境下的Active Directory(AD)单点登录(Single Sign-On, SSO)的实现...
SSO(Single Sign-On)单点登录...总之,SSO单点登录为用户提供了便捷的访问体验,同时降低了管理多系统登录的复杂性。通过理解其原理和实现方式,我们可以根据具体需求选择合适的技术方案,构建高效且安全的SSO系统。
SSO单点登录技术是现代企业级应用架构中不可或缺的一部分,它通过统一的身份认证服务提升了用户体验,降低了运维复杂度。"Simple-SSO"项目为开发者提供了一个学习和实践SSO的平台,结合Maven的项目管理,使得分布式...
单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。IBM对SSO有一个形象的解释“单点登录、...
SSO单点登录解决方案 SSO(Single Sign-On)单点登录解决方案旨在提供一个统一的身份验证入口,满足集团多个成员网站的身份验证需求。该方案的主要目标是实现单点登录,提高用户体验,降低成员网站的登录负载,并...
这个“sso单点登录demo”是一个Java实现的示例,包含了三种不同的场景:相同域名、相同父类域名以及不同域名的SSO解决方案。 1. **相同域名的SSO** (`sso_same_domain`): 在同一域名下实现SSO,通常比较直接,因为...
基于JWT实现SSO单点登录流程图解 基于JWT实现SSO单点登录流程图解是指使用JSON Web Token(JWT)来实现单点登录(SSO)的机制。在这种机制中,用户只需要登录一次,就可以访问多个应用服务器上的资源,而不需要再次...
在“sso单点登录源代码”中,我们可以看到以下几个关键组成部分: 1. **SSOLab.sln**:这是一个Visual Studio解决方案文件,包含了整个SSO项目的所有组件。通过这个文件,开发者可以打开并管理整个项目,包括各个子...
在"springCloud-master_单点登录_springCloud单点登录_SpringCloud系统_springcloud eureka单点登录"这个项目中,我们将重点探讨如何在SpringCloud环境中实现单点登录(Single Sign-On,简称SSO)。 单点登录是一种...