longgangbai 发表于 2013-1-28 20:54:20

SSO解决方案大全

 Sun已经通过官方宣布将开放一个身份管理系统的代码,改身份管理系统为Dubbed OpenSSO (Open Web Single Sign-On),Dubbed OpenSSO产品是一套工具,利用改工具企业能够创建一个统一的授权和session管理框架,以至于连接不同类型的基于Web的和基于Java的应用程序。 

    Dubbed OpenSSO软件要求J2EE应用服务器,但是为了便携特性,它削减了其部分功能,更像OpenOffice/StarOffice多采取的策略。Sun计划继续将其作为一个商业产品来提供访问管理,当前的OpenSSO 来源于访问管理7.0并且通过公共CVS来使用,Sun已经通过改变其代码建立了管理结构。

前段时间为我们的系统做SSO(单点登录)参考了很多资料,其中包括博客园二级域名的登录.翻译本文是由于作者的一句话:思想都是一样的,只不过实现起来需要创造性思维.

  Single Sign-On (SSO)是近来的热门话题. 很多和我交往的客户中都有不止一个运行在.Net框架中的Web应用程序或者若干子域名.而他们甚至希望在不同的域名中也可以只登陆一次就可以畅游所有站点.今天我们关注的是如何在各种不同的应用场景中实现 SSO. 我们由简到繁,逐一攻破.
  虚拟目录的主应用和子应用间实现SSO
  使用不同验证机制实现SSO  (username mapping)
  同一域名中,子域名下的应用程序间实现SSO
  运行在不同版本.NET下的应用程序间实现SSO
  两个不同域名下的Web应用程序间实现SSO
  混合身份验证方式模式 (Forms and Windows)下实现SSO
 
  1. 虚拟目录的主应用和子应用之间实现SSO
  假设有两个.Net的Web应用程序-Foo和Bar,Bar运行在Foo虚拟目录的子目录(http://foo.com/bar).二者都实现了Forms认证.实现Forms认证需要我们重写Application_AuthenticateRequest,在这个时机我们完成认证一旦通过验证就调用一下FormsAuthentication.RedirectFromLoginPage.这个方法接收的参数是用户名或者其它的一些身份信息.在Asp.net中登录用户的状态是持久化存储在客户端的cookie中.当你调用RedirectFromLoginPage时就会创建一个包含加密令牌FormsAuthenticationTicket的cookie,cookie名就是登录用户的用户名.下面的配置节在Web.config定义了这种cookie如何创建:
  比较重要的两个属性是 name 和protection. 按照下面的配置就可以让Foo和Bar两个程序在同样的保护级别下读写Cookie,这就实现了SSO的效果:
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 98%; padding-top: 4px;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><authentication mode="Forms">
<forms name=".SSOAuth" protection="All" timeout="60" loginUrl="login.aspx" />
</authentication>

页: [1]
查看完整版本: SSO解决方案大全