第一篇:基于WEB服务单点登录设计与实现
龙源期刊网 http://.cn
基于WEB服务单点登录设计与实现
作者:王 慧
来源:《沿海企业与科技》2006年第04期
[摘 要]文章描述了当前不同的软件服务系统身份认证管理、授权管理存在的问题,同时介绍了单点登录SingleSignOn(SSO)在这方面的解决方法与应用;并且结合Web Service提供一个简单的单点登录技术的实现,对其关键部分的开发思想进行了详细说明。
[关键词]SSO;AD;WebService;Net
[中图分类号]F270.7
[文献标识码]A
第二篇:单点登录实现方案心得
单点登录实现方案心得
一、引言
至于什么是单点登录,举个例子,如果你登录了msn messenger,访问hotmail邮件就不用在此登录。
一般单点登录都需要有一个独立的登录站点,一般具有独立的域名,专门的进行注册,登录,注销等操作
我们为了讨论方便,把这个登录站点叫做站点P,设其Url为http://passport.abc.com,需要提供服务的站点设为A和B,跨站点单点登录是指你在A网站进行登录后,使用B网站的服务就不需要再登录
从技术角度讲单点登录分为: 跨子域单点登录 完全跨单点域登录
二、跨子域单点登录
所谓跨子域登录,A,B站点和P站点位于同一个域下面,比如A站点为http://blog.yizhu2000.com B站点为 http://forum.abc.com,他们和登录站点P的关系可以看到,都是属于同一个父域,yizhu2000.com,不同的是子域不同,一个为blog,一个为forum,一个是passport 我们先看看最常用的非跨站点普通登录的情况,一般登录验证通过后,一般会将你的用户名和一些用户信息,通过某一密钥进行加密,写在本地,也就是一个加密的cookie,我们把这个cookie叫做--票(ticket)。
需要判断用户是否登录的页面,需要读取这个ticket,并从其中解密出用户信息,如果ticket不存在,或者无法解密,意味着用户没有登录,或 者登录信息不正确,这时就要跳转到登录页面进行登录,在这里加密的作用有两个,一是防止用户信息被不怀好意者看到,二是保证ticket不会被伪造,后者 其实更为重要,加密后,各个应用需要采用与加密同样的密钥进行解密,如果不知道密钥,就不能伪造出ticket,(注:加密和解密的密钥有可能不同,取决于采用什么加密算法,如果是对称加密,则为同一密钥,如果是非对称,就不同了,一般用私钥加密,公钥解密,但是无论怎样,密钥都只有内部知道,这样伪造者既无法伪造也无法解密ticket)跨子域的单点登录,和上述普通登录的过程没有什么不同,唯一不同的是写cookie时,由于登录站点P和应用A处于不同的子域,P站写入的 cookie的域为passport.yizhu2000.net,而A站点为forum.yizhu2000.net,A在判断用户登录时无法读到P站 点的ticket 解决方法非常简单,当Login完成后P站点写ticket的时候,只需把cookie的域设为他们共同的父域,yizhu2000.net就可以了:cookie.domain=“yizhu2000.net”,A站点自然就可以读到这个ticket了 ASP。Net的form验证本身实现了这个机制,大家可以参考http://blog.csdn.net/octverve/archive/2007/09/22/1796338.aspx ASP.NET身份验证信息跨域共享状态
在ASP.NET 2.0 中只需修改web.config文件即可,修改方法如下:
domain指定了cookie保存的域,只要保存的是 abc.com形式或者.abc.com的形式,那么其二级域名都可以共享此cookie。
此外,web.config标签中的
三、完全跨单点域登录
完全跨域登录,是指A,B站点和P站点没有共同的父域,比如A站点为forum.yizhu1999.net,B站点为blog.yizhu1998.net,大家可以参考微软旗下的几个站点,这两个站点就没有共同的父域,而仍然可以共用登录,怎样才能实现呢?请参考下图,由于这种情况ticket比较复杂,我们暂时把P站点创建的的ticket叫做P-ticket,而A站点创建的ticket叫A-ticket,B的为B-ticket
由于站点A(forum.yizhu1999.com)不能读取到由站点P(passport.yizhu2000.com)创建的加密 ticket,所以当用户访问A站点上需要登录才能访问的资源时,A站点会首先查看是否有A-ticket,如果没有,证明用户没有在A站点登录过,不过 并不保证用户没有在B站点登录,(重复一下,既然是单点登录,当然无论你在A,B任意一个站点登录过,另外一个站点都要可以访问),请求会被重定向到p站 点的验证页面,验证页面读取P-ticket,如果没有,或者解密不成功,就需要重定向登录页面,登录页面完成登录后,写一个加密cookie,也就是 P-ticket,并且重定向到A站点的登录处理页,并把加密的用户信息作为参数传递给这个页面,这个页面接收登录页的用户信息,解密后也要写一个 cookie,也就是A-ticket,今后用户再次访问A站点上需要登录权限才能访问的资源时,只需要检查这个A-cookie是否存在就可以了 当用户访问B站点时,会重复上面的过程,监测到没有B-ticket,就会重定向到P站点的验证页面,去检查P-ticket,如果没有,就登录,有则返回B的登录处理页面写B-ticket
注销的时候需要删除P-ticket和A-ticket
怎么删除cookie:本来以为这个不是问题,不过还是有朋友问道,简单的说其实是创建一个和你要删除的cookie同名的cookie,并把 cookie的expire设为当前时间之前的某个时间,不过在跨子域的删除cookie时有一点要注意:必须要把cookie的域设置为父域,在本文中 为yizhu2000.com 为了保证各个环节的传输的安全性,最好使用https连接
四、总结
第三篇:基于XML的Web数据交换系统设计与实现
龙源期刊网 http://.cn
基于XML的Web数据交换系统设计与实现
作者:王振辉
来源:《现代电子技术》2010年第20期
第四篇:基于WEB的工作流引擎设计和实现
基于WEB的工作流引擎设计和实现
一、引言
随着社会生产的流程化,工作流(Workflow)起着越来越重要的作业,工作流的核心是流程管理。对于企业来说,其生产经营活动就是由各种各样业务流程交织在一起组成的。然而,在企业管理中,许多流程在日常操作过程中已被习惯,而不被人们所重视,更不能被有效的管理起来。另外,客户的需求瞬息万变,而产品的生命周期也是在不断缩短,技术在不断创新。企业要在这样一个竞争和变换的外部环境中求得生存,就必须要有随需而变的能力,不断地调整和优化自身的各种业务流程,对流程进行重构和再造。为此,本文详细描述了工作流引擎的系统结构、接口设计、功能建模,以及工作流引擎在ERP系统中的应用。
二、工作流技术概述
(一)相关概念
工作流(Workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型进行表示并对其实施计算。工作流引擎(Workflow Engine,WfE)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流引擎来调度、实现。
(二)工作流引擎的主要功能
工作流引擎是定义、创建、执行工作流的软件组元。作为工作流的核心应能提供以下几个方面的功能支持:解释过程定义;创建过程实例并控制其执行;调度各项活动;为用户工作表添加工作项;通过应用程序接口(API)调用应用程序;提供监督和管理功能等。
三、工作流引擎的分析及设计
(一)工作流引擎的功能结构
工作流引擎需要支持两种业务流程,即确定型工作流和非确定工作流。确定型工作流是指人们可以事先给出运行路线的一类业务流程;非确定型工作流是指人们事先不能给出运行路线的一类业务流程。业务流程的流向应根据实际情况而定。工作流引擎的功能结构图应该如图一所示:
图1 工作流引擎的功能结构图
(二)工作流引擎控制器分析
引擎控制器是工作流引擎在运行时的控制中心,引擎控制器的控制结构图如图二所示:
图二 引擎控制器的控制结构图
1.调度中心。调度中心接受从外部接口发送过来有关流程控制的请求,然后根据不同的请求类型调用相应的处理模块完成与本次请求相关的操作并将结果返回。由于是在DBMS内部实现工作流引擎的控制模型,因此有关请求的并发处理等问题完全可以交给数据库管理系统来完成,也不需要诸如请求队列等形式的数据结构。
2.任务管理。任务管理主要根据调度中心的指示完成诸如任务创建、任务状态的转换以及相关数据的维护等工作。每次“结束任务”的外部请求将触发调度中心调用“任务管理”为后继活动(如果存在的话)创建新的实例,其状态为“待定”;同时,其他不同的外部请求也将触发“任务管理”实施任务状态的切换。
3.任务指派。任务指派处理只是针对常规交互活动,通常情况下,在任务状态由“待定”切换到“等待”过程中完成任务的指派工作,即处于就绪状态的任务在通常情况下都确定了其执行者。任务指派过程首先根据任务指派基准确定可以执行此任务的群体人员,通常情况下这是一个包含多个人员的集合;然后根据任务指派方法确定由这个群体中的哪些个体来执行任务,执行任务的个体标识记录在相应任务记录的字段中。
4.依赖检查。在工作流引擎中,业务规则可以分解成活动的前依赖规则和活动的后转发规则。依赖检查指的是活动的前依赖规则的检查,调度中心在将任务切换到就绪状态之前将进行相关的前依赖规则检查,只有满足检查条件的任务才可以进行状态的切换。
前依赖规则包含顺序、与汇聚、或汇聚和投票汇聚四种规则:
第一,对于顺序前依赖规则,从前趋活动流转到当前活动跟其他前趋活动没有关系,当前活动的启动没有其他约束条件,相应任务可以立即由“待定”状态转换到“等待”状态。
第二,对于与汇聚前依赖规则,相应记录要指明所有参与与汇聚的其他前趋活动,只有所有相关的前趋活动均到达各自指定的结束状态,当前活动方可启动。第三,对于或汇聚前依赖规则,前依赖活动集为空集,此规则的检查将涉及到业务活动表中的或汇集标志,其取值可以是所有相关的前趋活动的结束标记之一或者是一个特殊的标记。如果或汇集标志不是一个特殊标记,则将检查相应前趋活动的结束标记是否和或汇集标志相同,若相同,则启动当前活动,若不相同,则不作任何处理。如果或汇集标志是一个特殊标记,则首先结束的前趋活动将启动当前活动,后结束的活动将被丢弃。
第四,对于投票汇聚活动,前依赖活动集同样为空集,当前活动要等到属于同一批次任务数目达到设置的要求方可启动。
5.转发控制。当应用发出“结束任务”的外部请求时,该请求将触发调度中心启动“转发控制”。转发控制的主要依据在工作流数据模型中定义的后转发规则,后转发规则定义了当前活动与其后继活动之间的关系。
6.启动控制。启动控制负责常规自动活动的所对应的自动执行体的启动并对其活动进行监控。
三、工作流引擎实现
(一)任务表结构
确定型任务表负责保存系统中所有确定型流程的任务实例待处理记录及任务实例处理的历史记录,工作流引擎定期扫描该任务表,将任务表中所有待处理的任务实例分发给相应流程中的相应节点。
确定型任务表的结构为:TaskList(TasklnstanceID,TasklD,TaskStep,TaskHandleTime,ProceeID,DstNodelD,lsHandled,CommmitMan),分别为:TasklnstaneeID:同一个任务可以有多个不同的运行实例。该字段用于区别多个不同的运行实例;TasklD:用于区别不同的任务;TaskStep:记录任务运行实例在流程中的处理步骤;TaskHand]eTime:任务运行实例在相应处理步骤中的处理时间;Processed:记录任务实例所在流程的ID;DstNodelD:处理任务运行实例的后续节点;IsHandled:任务实例在后续节点是否已经处理;CommitMan:任务的处理人。
(二)工作流的流向控制
工作流引擎的一个核心功能就是要决定确定型任务表中各个任务运行实例的后续处理节点,使任务运行实例按照事先定义好的路线流动,也就是流程的流向控制。
流向控制算法描述如下:
/*控制流程流向*/
function HowControl(string processid,string nodeid){
string[] followIds= GetSueNodeld(processed,nodeid);
for(int i=0;i /*后续节点同步控制*/ if(查询后续节点i所对应的条件中有无isprecondition为true的条件)对后续节点进行同步控制; /*子流程的处理情况*/ if(后续节点i是子流程) 将子流程的第一个节点作为后续节点; 向任务表中加入一条待处理记录; } } 四、结语 本文介绍了一个基于Web的工作流引擎的具体实现,该工作流引擎已经在药业管理系统中得到了实际应用,基本上可以达到预期效果,说明基于Web的工作流引擎设计和实现都具有相对可行性,可以应用在具体的管理系统中。 基于Web的互助式学习的平台的设计与实现 吴代文 (渭南师范学院 传媒工程系 陕西 渭南 714000) 摘要:为了满足本校学生网上交流学习的需要,本系统以因特网作为平台,采用B/S模式,以J2EE为开发平台,并结合JSP技术及SQL数据库来进行开发,实现了发布留言、回复留言、审核留言、留言管理、用户管理、实现课程论坛等功能。系统运行与测试结果表明,系统的功能达到了设计要求,能够满足本校学生的学习需求,可以实时的进行网上交流,该平台具有灵活、互动的特点,对于设计开发此类系统有一定参考价值。 关键词:互助式学习的平台;Web环境;JSP技术;J2EE平台 The design and implementation of learning platform by mutual aid Based on web WU Dai-wen(Department of Communication Engineering,Weinan Teachers University,Weinan Shanxi 714000,China) Abstract:In order to realize the demand of students learn to communicate online.This system which combines with the actual demand uses the Internet as a platform, the B/S model adopted,J2EE as the development platform, and combines the JSP development technology and SQL database for development.It realizes the function of reply message, by message, message, guestbook management review, user management, BBS courses etc.The operation and test of system results that the function of the system meets the requirements of design,the needs of students learning,the exchanges of real-time online.This platform has the characteristic of flexibility and interaction, it has certain reference value for similar systems.Key Words :learning platform by mutual aid;Web environment, The JSP technology, The J2EE platform 引言 近年来,随着互联网与计算机软硬件迅速发展,人们的生活、思维、工作、教育以及受教育等方式都发生了改变。在教学领域中,互联网与计算机的新概念、新技术、新环境被不断的引入。网络技术与教育的结合正在改变着传统的教育思想、观念、内容、方法,以及传统的人才培养模式[1][2],教学方式的改革也逐渐的显露出重要性。为此,本文结合网络教育的特点,设计并实现了一种基于Web的互助式学习的平台。研究依据 网络环境下互助式学习应充分发挥网络学习的功能,形成网络教育为先、学生自主学习为主、互助交流为核心的学习的平台的新模式,其学习的平台的建设必须遵循实用化的原则,必须符合开放性、通用性、系统与平台无关性等要求,而且应当易于实现、易于部署、易于维护和易于扩展[3]。因此,我们考虑该信息平台应基于MVC模式,采用B/S浏览结构,系统总体由Web服务器、数据库服务器和用户界面文件三部分构成。系统设计 3.1 系统架构设计 在系统架构设计中,分层式结构是一种重要的结构。我们考虑该信息平台基于MVC模式,采用基于B/S结构三层架构。三层架构的优势在于: 开发人员可以只关注整个结构中的其中某一层,可以很容易的用新的实现来替换原有层次的实现,可以降低层与层之间的依赖性,有利于标准化和各层逻辑的复用[4]。 三层架构包括:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。(1)表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统时他的所见所得。位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面[5]。 (2)业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层[6]。 (3)数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。 3.2系统设计流程 此系统主要包括留言插入、回复留言、审核留言、留言管理、课程论坛的实现、用户管理六个模块,系统体系结构如图1所示: 首页专业论坛发布留言回复留言审核留言留言管理用户管理课程论坛审核通过不显示显示浏览修改删除留言指定管理员取消管理员 图1系统体系结构图 系统实现 4.1 数据库的设计 针对所设计系统中数据存储的问题,对几种数据库进行了比较,根据数据量的大小以及数据的特点,最后决定采用sql数据库来实现数据的存储。本文所设计的系统采用sql2000数据库,系统的数据库名为cmxEduTecDb,集中对数据进行存储,并根据实际需要建立用户表tb_user和留言表tb_messages,分别进行用户和留言数据的存储。其中针对留言表建立了发布留言、回复留言、审核留言、留言管理、课程论坛的实现等功能;针对用户表建立指定管理员、取消管理员、用户管理功能,以方便对留言的管理。 4.2 各模块的实现 本文中设计的网络环境下互助式学习的平台主要的模块有: (1)留言的插入模块,它主要负责将用户的留言存储到数据库中,以便以后的查询和管理。 (2)留言的回复模块,它主要是回复访问者的留言,同时也会更新父留言的回复数。(3)留言的审核模块,它主要是审核已经发布的留言,审核未通过的留言将不会显示。审核可通过单个或批量审核来实现,删除也可以通过单个或批量进行删除。 (4)留言的管理模块,它主要实现留言的浏览和删除,删除流言可通过单个或批量删除来实现。 (5)课程论坛的实现模块,课程论坛可以从相应的课程进入,该论坛中的留言都是与本课程有关的留言。 (6)用户管理模块,主要有指定管理员和取消管理员两部分,管理员的作用就在于对 2 留言进行管理,同时也可对用户进行管理。结束语 本文利用Java技术,以互助式学习的平台的设计与实现为实例,全面地剖析了一个基于Web的互助式学习的平台设计与实现过程,提出新的思路、新的架构和技术路。提出用Java+JSP+sql2000框架来开发互助式学习的平台,该平台具有实时、灵活、互动和交互性强等特点,目前已投入使用并初见成效;同时该平台还具有一定的推广价值,对于设计开发类似平台也有一定参考价值。 参考文献 [1] 张毅.基于网络环境下现代远程教育学习中心平台的设计与实现[J].现代远距离教育,2004.6 [2] 何克抗.《网络教学结构与网络教学模式探讨》.[3] 何锦仪.《网络环境下如何构建学生自主学习的平台》.[4] 张新曼,精通JSP-Web开发技术与典型应用[M].人民邮电出版社,2007.[5] 孙鑫.Java Web开发详解[M].电子工业出版社,2006.[6] 陈天河.Java数据库高级编程[M].电子工业出版社,2005.第五篇:基于Web的互助式学习的平台的设计与实现[模版]
