`
shallon
  • 浏览: 72350 次
  • 性别: Icon_minigender_2
  • 来自: 0
文章分类
社区版块
存档分类
最新评论
阅读更多
业务场景:
跨域的融合应用,企业内网的自动化办公应用与放置在公网上的应用集成

流程:

1、用户通过浏览器登陆集成的门户<o:p></o:p>

2、集成的门户返回页面,用户选择外域提供的功能链接<o:p></o:p>

3、链接发送到跨域接口模块<o:p></o:p>

4、跨域接口模块解密藏在cookie中的集成门户颁发的登陆票,获取userid,跨域接口模块生成一个重定向到外域应用门户网页,并将用户ID及本域服务器身份认证信息放置到自动提交的隐藏表单中。隐藏表单的提交地址是外域的页面地址<o:p></o:p>

5、跨域接口模块把网页返回给浏览器,浏览器自动提交隐藏表单,请求发送外域WEB服务器。外域服务器登陆用户。<o:p></o:p>

<o:p> </o:p>

特点:<o:p></o:p>

1、后续请求不过跨域接口模块,直接与外域WEB服务器连接<o:p></o:p>

2、对同一个用户,本域WEB服务器与外域WEB服务器维护的是独立的两个COOKIE,有独立的超时时间。本域应用用户logout后,外域应用会话有可能还存活。<o:p></o:p>

3、基于安全考虑,本域的传递到外域服务器的信息可以进行加密。<o:p></o:p>

<o:p></o:p>



分享到:
评论
10 楼 downpour 2008-05-28  
登录信息的管理中心一旦建立,就会造成所有的系统都对这个管理中心产生依赖。如果这个管理中心无法正常工作呢?是不是所有的系统都倒了?

我还是倾向Session信息使用各自系统自己的,在Session上做一些处理,针对用户登录信息,到统一的地方去读比较好。不要让这个统一的地方有处理功能,因为那个依赖性太强。仅让其作为一个存储空间并具备超时机制就可以了。
9 楼 香克斯 2008-05-28  
有很多所谓的登陆的话,就是从统一登录系统中想办法把用户信息传递到另外的系统。这似乎是多家企业开发的系统要作统一登录的惯用方案,实现也比较简单,反正就是一个转发,session都是自己系统的。不过如果是新系统的话,还是fins说的建立一个登录信息的管理中心比较好,将来要做什么改变或者扩展也好弄。
8 楼 fkpwolf 2007-10-08  
不是有个开源的sso实现的么
7 楼 囡囡猫 2007-10-05  
我们单位的SSO场景:其他厂商的系统一点都不能更改。我们打算采用shallon的方案。
有一点疑问:
1。"...藏在cookie中的集成门户颁发的登陆票..."

登陆票的结构和生成规则是什么样子的?

2。"...并将用户ID及本域服务器身份认证信息放置到自动提交的隐藏表单中"

隐藏表单的作用很明显,只是里面的密码隐藏域存放的是密码明文吗?

6 楼 pikachu 2007-09-10  
<br/>
<strong>shallon 写道:</strong><br/>
<div class='quote_div'>业务场景:<br/>
跨域的融合应用,企业内网的自动化办公应用与放置在公网上的应用集成<br/>
<br/>
流程:<br/>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>1</span><span style=''>、用户通过浏览器登陆集成的门户</span><span lang='EN-US' style=''>&lt;o:p&gt;&lt;/o:p&gt;</span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>2</span><span style=''>、集成的门户返回页面,用户选择外域提供的功能链接</span><span lang='EN-US' style=''>&lt;o:p&gt;&lt;/o:p&gt;</span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>3</span><span style=''>、链接发送到跨域接口模块</span><span lang='EN-US' style=''>&lt;o:p&gt;&lt;/o:p&gt;</span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>4</span><span style=''>、跨域接口模块解密藏在<span lang='EN-US'>cookie</span>中的集成门户颁发的登陆票,获取<span lang='EN-US'>userid</span>,跨域接口模块生成一个重定向到外域应用门户网页,并将用户<span lang='EN-US'>ID</span>及本域服务器身份认证信息放置到自动提交的隐藏表单中。隐藏表单的提交地址是外域的页面地址</span><span lang='EN-US' style=''>&lt;o:p&gt;&lt;/o:p&gt;</span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>5</span><span style=''>、跨域接口模块把网页返回给浏览器,浏览器自动提交隐藏表单,请求发送外域<span lang='EN-US'>WEB</span>服务器。外域服务器登陆用户。<span lang='EN-US'>&lt;o:p&gt;&lt;/o:p&gt;</span></span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>&lt;o:p&gt; &lt;/o:p&gt;</span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span style=''>特点:<span lang='EN-US'>&lt;o:p&gt;&lt;/o:p&gt;</span></span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>1</span><span style=''>、后续请求不过跨域接口模块,直接与外域<span lang='EN-US'>WEB</span>服务器连接<span lang='EN-US'>&lt;o:p&gt;&lt;/o:p&gt;</span></span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>2</span><span style=''>、对同一个用户,本域<span lang='EN-US'>WEB</span>服务器与外域<span lang='EN-US'>WEB</span>服务器维护的是独立的两个<span lang='EN-US'>COOKIE</span>,有独立的超时时间。本域应用用户<span lang='EN-US'>logout</span>后,外域应用会话有可能还存活。<span lang='EN-US'>&lt;o:p&gt;&lt;/o:p&gt;</span></span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''>3</span><span style=''>、基于安全考虑,本域的传递到外域服务器的信息可以进行加密。<span lang='EN-US'>&lt;o:p&gt;&lt;/o:p&gt;</span></span></p>
<p class='MsoNormal' align='left' style='text-align: left;'><span lang='EN-US' style=''><span style=''/>&lt;o:p&gt;&lt;/o:p&gt;</span></p>
<br/>
<br/>
<img src='http://shallon.iteye.com/upload/picture/pic/5096/43f888a9-802a-4662-8861-363997dd260d.jpg' alt=''/></div>
<br/>
<br/>
这玩样的设计思路同cas如出一辙.而且还可以给你加强一下,用户登入任一系统时如果没有当前用户信息则redirect到统一登陆门户.<br/>
问题是你要修改其他应用的登陆模块,厂商们肯么?<br/>
<br/>
而且sso的难度不在login验证,而在于用户信息在多系统之间的同步以及各系统之间的独立授权(统一授权基本不可行.我从来就没有看到有两家厂商产品天然的就能统一授权).
5 楼 zhbking 2007-09-10  
学习ing
4 楼 shallon 2007-09-09  
我描述的不是SSO普适的案例,描述的是一种COOKIE信息传递的外域的方法。其背景是企业内网门户集成公网上的应用界面。对大型的企业,内部的IT系统管理安全要求会比较高,并且希望系统间接口尽量少,出问题的时候避免厂家的互相推卸责任。
1、企业的内网服务器不能为公网访问,企业中的浏览器通过另外的企业管理的httpProxy,连接到公网,所以处在外域的被企业门户集成的应用不能在LOGOUT的时候告诉企业门户,以便将Session登出。在设计上单点登出也没有作为要求。
2、外域应用在登陆后就与企业的内部应用没有关系,既是安全上的要求,也对原有系统修改最少。
3 楼 fyting 2007-09-08  
引用

2、对同一个用户,本域WEB服务器与外域WEB服务器维护的是独立的两个COOKIE,有独立的超时时间。本域应用用户logout后,外域应用会话有可能还存活。

你这样的意思是登录后,外域服务器和本地域服务器之间就不再有任何联系和通信?或者说是两个不同的身份认证中心了?
2 楼 fins 2007-09-08  
"本域应用用户logout后,外域应用会话有可能还存活。"
这个是很严重的问题.应该当成缺陷,而不应该当作 特点.
解决办法还是需要一台中央认证服务器(可以用任何一个所有服务器都能访问到的机器).
另外这期间可以利用rpc(或者是rest)来减少客户端与服务器的交互(同时可以提高安全性).


补充一下,我觉得利用ajax+ hession(一个轻量级RPC组件)+ REST(简单的就可以 可以参考江南白衣的那篇用httpClient组件实现简单REST的文章)+EHCACHE 肯定可以做出一个很不错的 轻量级的 SSO方案来

楼主如果对这个感兴趣欢迎和我一起探讨.
我以前做过一个简单的 但是很不成熟,一直想做个稍微好点的 ,但是没时间没精力啊 呵呵
1 楼 hanzaihua 2007-09-08  
怎么没下文了啊

相关推荐

    ( SSO解决方案

    SSO解决方案--提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询。 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且...SSO实现包含以下三个原则:

    基于SpringBoot实现单点登录的两种方式

    基于SpringBoot实现单点登录的两种方式,第一种(Session):SpringBoot+SpringSession+Redis;第二种基于(Session+Cookie):SpringBoot+Redis(redis集群+池化:一致性Hash分片算法) 实现单点登陆

    JOSSO实现SSO

    JOSSO(Java Open Single Sign-On)是一个开源的J2EE-based的SSO(单点登录)基础结构.它的目的是提供一种用来解决在统一平台上进行用户集中认证的方案.

    基于页面集成的统一身份认证SSO系统的实现 (2009年)

    文章针对目前的统一身份认证和单点登录解决方案存在技术环节多、成本高、运行风险大等问题,提出一种简易实现方式,采用了WEB页面集成的方式,通过建立用户信息映射表、模拟form表单和URL参数传递等关键技术实现,具有...

    2021年受精优化算法(SSO)

    前一种解决方案可以通过任何精子基于特定的邻域来实现,因为每个个体都会记住自己过去的位置来确定新的位置。同时,后一种解决方案可以通过任何精子根据其与目标的位置来实现,因为这个解决方案将被与目标(卵子)...

    浅谈谁都能看懂的单点登录(SSO)实现方式(附源码)

    今天这篇文章将介绍SSO的一种实现方式,代码超简单,仅用来验证我的思路是否可行,具体细节请大家来完善! 二级域名的单点登录 什么是二级域名呢?例如: site1.domain.com site2.domain.com 对于二级域名的单点...

    oauth2-sso-demo-master.zip

    有这样一种场景,一个用户(假设是QQ),希望让一个第三方的应用(比如说某个论坛),能够得到关于自身的一些信息(唯一用户标识,比如说QQ号,...而Oatuh2就是实现上述目标的一种规范,或者说是具体实现的指导方案。

    一种基于PKI的Web单点登录方案

    本文提出了一种基于PKI的Web单点登录方案,用户可以安全有效的实现"一次登录,自由切换"。给出了方案的总体模型,详细地分析了登录流程。采用双向认证,保证用户和认证服务器的合法身份。使用两级授权机制和SSO代理,...

    详解可跨域的单点登录(SSO)实现方案【附.net代码】

     单点登录是一种多站点共享登录访问授权机制,访问用户只需要在一个站点登录就可以访问其它站点需要登录访问的资源(url)。用户在任意一个站点注销登录,则其它站点的登录状态也被注销。简而言之就是:一处登录,...

    SSO CAS 单点登录实例SSOAuth+SSOWebDemo1+SSOWebDemo2.zip

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

    论文研究-企业门户Web资源整合及其实现的研究.pdf

    提出了一种特殊的远程门户组件Web服务(WSRP)实现机制WA2WP(Web Application to WSRP Portlet),可将普通Web网站映射封装为虚拟门户组件发布;给出了改进的跨域单点登录机制SSO4EPI(Single Sign On for ...

    java-cas单点登录服务端

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 开源的企业级单点登录解决方案。 CAS Server 为需要...

    基于Django集成CAS实现流程详解

    有多种开源的单点登录方案,其中,CAS(Central Authentication Service)是Yale University开发的、应用比较广泛的一种实现。 CAS概述 CAS 全称集中式认证服务(Central Authentication Service),是实现单点登录...

    NC5系列Portal单点登录及系统集成红皮书

    NC-Portal的单点登录方案,就是SSO技术的一种实现方式。 NC-Portal的SSO方案是基于凭证的思想设计。对于NC-Portal集成的每个第三方系统都有一个制作凭证的页面,该页面用于当前登录的portal用户输入对应的第三方...

    论文研究-基于PeertoPeer的单点登录服务研究和实现.pdf

    使用PeertoPeer模型设计了一种新的单点登录服务模型,并在国家科技基础条件平台门户应用系统的身份认证系统中实际应用。该方案(NPSSO)把身份认证分配到多个身份认证服务器上,每个身份认证服务器均由一个单独...

    sa-token:这可能是史上功能最全的Java权限认证框架!目前已集成-登录验证,权限验证,会话会话,踢人下线,分布式会话,单点登录,OAuth2.0,记住我模式,模拟公众账号,临时身份切换,集成Redis,多账号认证体系,前后台分离模式,注解式鉴权,路由拦截式鉴权,花式令牌生成,自动续签,同端互斥登录,会话治理,密码加密,jwt集成,Spring集成..

    你可以以一种极简的方式实现系统的权限认证部分与其他权限认证框架索引, sa-token具有以下优点:简单:可零配置启动框架,真正的开箱即用,规定上手强大:目前已集成数十项权限相关特性,涵盖了大部分业务场景的...

    asp.net知识库

    .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 ...

    c#关于JWT跨域身份验证的实现代码

    为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519), 该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的...

    亮剑.NET深入体验与实战精要2

    因pdf的容量过大分4个压缩包打包,还有一个源码另外下载。 《.NET深入体验与实战精要》作者身为从事.NET一线开发的资深开发专家,常年耕耘技术博客,惠及无数.NET新知。此次将长期的思考、感悟,多年的系统开发、...

    亮剑.NET深入体验与实战精要3

    因pdf的容量过大分4个压缩包打包,还有一个源码另外下载。 《.NET深入体验与实战精要》作者身为从事.NET一线开发的资深开发专家,常年耕耘技术博客,惠及无数.NET新知。此次将长期的思考、感悟,多年的系统开发、...

Global site tag (gtag.js) - Google Analytics