企业门户应用整合中单点登录(SSO)的技术实现与应用

  1 引 言

  企业在信息化建设过程中,由于经常采用逐步信息化的方式,因此会造成企业内部各个应用系统的用户目录不完全兼容,各应用系统相互孤立,形成“信息孤岛”。信息孤岛的存在,使得信息系统用户需要做重复的登录。因此实际中,需要一个统一的用户登录管理系统平台,来实现用户统一身份验证。用户登录到某一应用系统(通常是门户站点,如办公自动化系统)后,当需要访问其他应用系统时,不必登录就可以直接进入应用系统。

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

  2 单点登录的实现原理

  2.1 单点登录的一般模型

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

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

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

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

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

  2.2 单点登录的重要概念

  2.2.1 单点登录点

  理想的情况是用户通过任何应用系统都能进行SSO(Single Sign-on),这对于基于Web的系统是可行的。这种单一的登录点在整个系统的设计中是惟一认证用户的地方,由登录点将SSO token(单点登录标志)(针对不同的C/S,B/S应用可能还需要传递用户名,口令)传递给应用系统,应用系统利用SSO token进行用户已认证的验证。将这个单一的登录点称为SSO Entry(单点登录点)。

  2.2.2 对原有应用系统的修改

  并不是任何系统都能够使用SSO,只有那些符合SSO规范,使用SSO API的应用系统才具有SSO的功能。因此,进行单点登录,需要修改已有的应用系统,屏蔽已有的应用系统的用户认证模块,使用单点登录系统提供的SSOAPI来验证用户,以及对用户的操作进行授权。

  2.2.3 建立统一的认证权限信息库

  建立统一的认证,权限存放库,进行认证与授权管理,将系统的认证、授权信息存贮结构与访问控制逻辑和应用的业务逻辑进行分离,使它们之间成为一种松散的耦合,便于系统的灵活管理。

  2.3 单点登录的工作流程

  单点登录有三个主体:使用Web浏览器的用户、服务提供者和登录服务器。登录服务器保存着用户的认证信息以及用户的个人信息,服务提供者在得到用户允许的前提下可以到登录服务器上获取用户个人信息。

  单点登录协议流程如图2所示。

  首先,当一个用户通过浏览器访问一个服务提供者时,如果该服务提供者需要验证用户的身份,就把该用户的浏览器重定向到登录服务器;登录服务器通过SSL连接为用户提供一个登录页面,用户进行登入;用户登录服务器后,被重定向回服务提供者,此时认证信息被包含在重定向消息中;服务提供者检验认证信息的真实性后,即可认为该用户成功登录。

  3 单点登录系统的体系结构

  单点登录系统平台主要由系统平台管理模块、应用系统代理模块、数据库三部分组成。

  3.1 管理模块

  单点登录系统平台的管理模块主要实现各种服务,主要包括:会话管理服务,日志审计服务,身份验证服务,授权服务。

  会话管理服务 单点登录系统平台的基础服务。用户登录单点登录的门户站点后,会话状态通过会话管理服务来管理,实现单点登录;

  日志审计服务 单点登录系统平台的辅助服务。日志审计实现对用户使用单点登录系统平台的详细日志,日志信息包括:登录时间、登录用户身份、登录应用系统、登录时使用的客户机IP地址和MAC地址等;

  身份验证服务 单点登录系统平台的扩展服务,实现对用户身份的验证。身份验证的方式可以多样,不同的应用环境可能采用不同的验证方式,单点登录系统平台能够方便地与现有的身份验证方式兼容,也能进行扩展;

  授权服务 单点登录的扩展服务,能够实现对某些应用系统的授权。不同的用户对同一应用系统的访问权限是不同的,在单点登录系统平台上,可以实现系统级的授权。

  3.2 数据库模块

  单点登录系统平台的数据库模块主要存储单点登录时的各种数据,主要包括:用户目录数据库、登录日志数据库等。

  用户目录数据库 系统平台使用统一的用户目录数据库,集中进行管理。各个应用系统进行身份验证时,都使用这个集中的数据库。

  登录日志数据库 系统平台能够对用户的身份验证行为进行日志记录,随时把握“何人何时以何种方式访问何种应用系统”。

  3.3 应用系统代理模块

  目前应用系统代理模块与单点登录系统平台进行通信,实现各应用系统与系统平台管理系统的连接。

  4 单点登录系统的部署

  4.1 单点登录系统的安全性要求

  作为应用系统的基础平台,单点登录系统平台的安全性非常重要。可以采用以下的方法保证系统安全:

  (1)内容安全。通过应用安全级别较高的加密算法,对存储的用户登录信息,包括用户登录名称、登录ID号码、电子数字证书等进行加密,保证即使系统管理员也无法获得或更改这些信息;

  (2)传输安全。信息在传输的过程中,也有可能被窃听和篡改。对于B/S系统,采用HTTPS/SSL安全传输通道,保证信息在传输中的安全;对于C/S系统,应用业界标准的安全认证协议,在传输前进行双向认证,同时,对通信内容进行加密和散列,也能保证信息在传输中的安全;

  (3)事后安全。在安全模型中,除了事前评估,事中控制外,还有事后的审计。单点登录平台提供完善的日志记录功能,日志内容包括登录时间、登录用户身份、登录的应用系统、登录时使用的客户机IP地址、计算机名和MAC地址等。

  单点登录系统的安全结构如图3所示。

  图3中,粗黑体标记出的“加密用户信息”、“日志数据库”、“安全传输通道(HTTPS等)”、“安全认证通道(挑战/相应协议等)”,都是单点登录平台采取的安全措施。

  单点登录平台实现内容安全、传输安全和事后安全,保证了整个平台系统的立体安全。

  单点登录平台能够详细记录用户使用单点登录平台的情况,包括登录时间、登录用户身份、登录的应用系统、登录时使用的客户机IP地址、计算机名和MAC地址等。同时,还提供图形化的日志查询工具,方便管理员进行统计分析和审计员进行监督审计。

  4.2 单点登录系统的部署

  单点登录系统平台通过向应用系统提供单点登录服务,实现单点登录。因此,单点登录系统平台部署与普通的应用系统部署不同。除了单点登录平台自身的部署外,支持单点登录的应用系统需要进行系统改造,系统改造以单点登录服务接口规范作为依据。

  单点登录系统的部署的示意图如图4所示。白色的立方体表示应用系统。浅蓝色的立方体表示单点登录SSO平台。从图中可以看出:各个应用系统与SSOEntry发生联系。SSO Entry需要向应用系统传递SSO Token,用户名,口令,然后启动应用系统。

  5 单点登录系统的应用

  天津大港石化总厂建立了企业门户,企业门户统一管理多种企业应用,包括销售系统、检测系统、生产系统、合同系统、办公系统、人事系统、电子地图、邮件系统等。这些应用有的是采用B/S架构,有的是采用C/S架构,有的是企业内部应用通过企业局域网应用,有的是采用广域网,跨区域实现。

  在确定单点登录系统设计时,确定的目标是:单点登录不能够修改任何现有B/S,C/S应用系统,这对目前SSO系统提出了技术方案与技术实施上的难题,目前普通单点登录系统一般难以克服这样的问题。根据与合作的技术开发与实施单位沟通,采用代理方式实现了单点登录。即现有应用系统的认证方式均不改变,通过单点登录系统获取用户名和密码,交给单点登录代理,由代理实现对现有系统的登录,这一实现方法在实际中被证明是切实可行的。

时间: 2024-11-02 06:23:18

企业门户应用整合中单点登录(SSO)的技术实现与应用的相关文章

CAS单点登录(SSO)完整教程

CAS单点登录(SSO)完整教程(2012-02-01更新) 一.教程说明 前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: Tomcat6.0.29 JDK6 CAS Server版本:cas-server-3.4.3.1.cas-server-

CAS解决单点登录SSO

关于CAS很多的原理和基础的配置启动,网上是很多的,我更多是结合我的实践和心得.需要了解CAS的原理,认证协议,认证流程,可以参考以下文章. 让CAS支持客户端自定义登陆页面--客户端篇 CAS原理与配置-基于CAS的单点登陆的研究(上) 服务端配置 CAS单点登陆部署 CAS配置手册 CAS单点登录配置 背景 单点登录(SSO)是企业开发的重要问题,在我的毕设项目中,由于要和系统其他开发模块共用用户认证模块,方便共享用户资源,所以需要一个好的SSO解决方案. 一般SSO的实现机制有两种:基于s

单点登录SSO简介

一.什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证. 二.单点登录解决了什么问题 解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录. 三.单点登录的技术实现机制 如下图所示: 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录:根据用户提供的登录信息,认证系统

asp.net简单实现单点登录(SSO)的方法_实用技巧

本文实例讲述了asp.net简单实现单点登录(SSO)的方法.分享给大家供大家参考,具体如下: 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统 CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架(耶鲁大学开发)主要用于Java Php 有兴趣大家可以研究下.. 下面是一个简单实现单点登录的

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

SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否为空,为空的话跳转到登录界面登录,不为空的话允许访问.  单点登录是一种多站点共享登录访问授权机制,访问用户只需要在一个站点登录就可以访问其它站点需要登录访问的资源(url).用户在任意一个站点注销登录,则其它站点的登录状态也被注销.简而言之就是:一处登录,处处登录.一处注销,处处注销. 应用场景:

网页-java单点登录SSO,模拟登录

问题描述 java单点登录SSO,模拟登录 要做一个Java单点登录系统,用户登录系统后,可以直接跳转到所需的子系统主页,无需再输入用户名密码.网上查了些资料,准备用cas实现,但发现子系统有权限管理,举个例子,用户所属部门不同,能访问的某个子系统的主页也不一样,cas貌似无法解决,想问下cas是不是真的没办法解决这个问题? 后来准备自己手动实现,有一个子系统是get方式传递用户名密码,自不必说,很容易实现.但有好几个是post方式传参,我开始使用HttpURLConnection模拟登录,但未

如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)

如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)   Apache Session复制: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html   使用Memcached来共享PHP Session: https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcache

基于.Net的单点登录(SSO)实现解决方案_实用技巧

前些天一位朋友要我帮忙做一单点登录,其实这个概念早已耳熟能详,但实际应用很少,难得最近轻闲,于是决定通过本文来详细描述一个SSO解决方案,希望对大家有所帮助.SSO的解决方案很多,但搜索结果令人大失所望,大部分是相互转载,并且描述的也是走马观花. 闲话少叙,进入正题,我的想法是使用集中验证方式,多个站点集中Passport验证. 如下图所示:  为方便清晰描述,先定义几个名词,本文中出现之处均为如下含义. 主站:Passport集中验证服务器 http://www.passport.com/ .

多站点单点登录(SSO)设计

这是一个老话题了,当前各门户一般也都实现了多个业务之间的单点登录.下面根据 我经历过的项目,谈一下我自己的看法. 为什么需要单点登录: 产品刚上线时,一般由于用户量少,所有的功能都放在一起,一般也不需要具体的单 点登录.随着用户量和业务发展的需要,要求逐步将产品按功能或性能分为相应独立的站 点,并分开部署,这就需要在各个站点之间进行单点登录,以达到用户一次登录,就可以 使用多个站点. 单点登录的实现: 简单方法: 在同一个域内的站点,可以简单的通过共享Cookie(将登录用户名存放 Cookie