异构环境下的Single Sign On 解决方法

    在Microsoft平台Single Sign On(单点登录)的解决方案中,大多数是采用Active Directory(活动目录)来实现。但在现实的环境中,很多企业出于各种各样的原因(或者是原来用的是Unix、Linux的环境,或是原来有其它的目录服务)而不愿使用AD服务。这样一来,当使用.net技术来做EAI的时候,会碰到一个问题,怎么样才能实现统一的用户管理与授权?采用数据库的方式,需要维护不同系统中的用户映射,管理不便,实现也较为麻烦。Jeet最近做的一个项目就碰到一个问题,用户原来的BI系统采用的Sun的目录服务,并要求我们所做的系统整合需要与LDAP集成的单点登录,实现用户的统一认证与授权。
     本来以为使用System.DirectoryServices就可以很容易的实现访问LDAP服务器,没想到System.DirectoryServices只适合于以LDAP方式表示访问Microsoft的AD,根本不能做到访问其它LDAP标准的服务器。 
      JAVA有因为其实跨平台的特性,对LDAP的支持是生来俱有的,但.net不知是否微软有意不提供对其它LDAP服务器的支持。没有办法只能自己找解决方法。多亏了jeet一向喜欢的Novell公司,提供了LDAP Libraries for C#,有基于MIT License的源代码,让我们有可能在.net下操作LDAP服务器,支持Linux与windows平台,是实现EAI不错的选择。因为LDAP Libraireis for C#需要Mono.Security,所以要先安装Mono,可以到http://www.mono-project.com/Main_Page下载最新的版本的mono并安装。在使用时Jeet碰到一个有趣的问题,下载了一个据说是稳定版本的1.0.6,但在编译LDAP Libraies的代码时却报错,搞了半天才知道是因为mono的问题,重新下载Mono 1.1.4版本把Mono.Security.dll引入工程终于可以成功编译。
       结合LDAP Libraries的示例代码与自己的实现方法,成功为客户实现了基于LDAP服务器的单点登录安案。

原文地址:https://www.cnblogs.com/jeet/p/128288.html