利用MOSS的SSO实现单点登陆[代码]-zt

本文介绍如何在Microsoft Office SharePoint Server (MOSS) 中实现单点登录(SSO)功能,通过获取SSO数据库中的用户名和密码,实现自动登录第三方系统Mantis的过程。
在这部分中,我将向大家介绍怎么来取得存放在SSO数据库中的用户名和密码,并使用它们进行POST提交登陆。

    思路是这样的,在MOSS中创建一个aspx页面,重写这个页面的Page_Load事件,也许你会说,MOSS页面里不能使用服务器端代码,鸡蛋石头飞来~~~呵呵,关于这方面的介绍,请参考我的另一个帖子:向MOSS页面中添加服务器端代码的另外一种方式,http://bbs.winos.cn/thread-48297-1-1.html,在Page_Load事件中,只有几行代码,根据当前登陆域帐户去取第三方系统Form认证的用户名和密码(在我这里是Mantis),并赋值给这个aspx页面的用户名和密码的输入框中,这两个是隐藏的,然后再在windowsonload事件中,执行aspx页面上Form的提交操作。以前看过有人做的OWA访问邮箱的webpart其实也是这种思路,大家都知道,MOSS自带的那个OWA webpart基本没有使用价值。

那我们就一步步来。首先创建一个aspx页面,这个页面完成模拟Post提交的工作,用Designer打开MOSS站点,测试的时候,我直接在站点的根路径下创建的这个页面,需要引用三个命名空间,在aspx页面顶部我们这样来写:

<%@ Page Language="c#" CodePage="936"%>

<%@ Import Namespace="Microsoft.SharePoint" %>

<%@ Import Namespace="Microsoft.SharePoint.Portal" %>

<%@ Import Namespace="Microsoft.SharePoint.Portal.SingleSignon" %>

第一行的CodePage="936"是一个编码格式的问题,我在Postmantis时需要,对你并不一定是必须的。引用之后,我们就可以写Page_Load事件了,这段代码我是参考网上一哥们写的,可以拿去直接使用:

  <script type="text/c#" runat="server">

     protected void Page_Load(object sender, EventArgs e)

    {

       IntPtr pUserName = IntPtr.Zero;

       IntPtr pPassword = IntPtr.Zero;

       ISsoProvider isso = SsoProviderFactory.GetSsoProvider();

       SsoCredentials myCreds = isso.GetCredentials("mantis");//第一部分提到的应用程序名字,我这是mantis

       pUserName = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(myCreds.UserName);

       String userName = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pUserName);

       pPassword = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(myCreds.Password);

       String passWord = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pPassword);

       this.username.Value = userName;

       this.password.Value = passWord;

    }

  </script>

其中,usernamepassword是我们页面上的两个服务器端控件,下面就是我们构建的模拟提交的Form:

<form action="Post的地址" method="POST" name="登陆页面Form名字 " autocomplete="off">

        <input type="hidden" name="return" value="Post成功后的地址">

        <input name="username" runat="server" id="username" type="hidden">

        <input name="password" runat="server" id="password" type="hidden">

</form>

当然,你可能不知道一个第三方系统Post到哪里去,我们需要借助一个IE插件HttpWatch来分析一下,点击插件的Record,当我们再点登陆的时候,就会看到我们需要的post地址,如图:

1.jpg

第一行就是Post的地址,第二行是在登陆成功后转至的地址,我们需要的就是这两个。

然后我们再查看一下页面的源文件,找到Form的名字及输入用户名和密码的两个文本框,在Mantis里是login_form usernamepassword,就用这三个名字来分别命名我们页面上的控件。

到这里,我们已经完成了根据当前登陆的域帐户取得Mantis里的用户名和密码,并赋值到页面中,现在需要做的只是在windows.onload时,将页面提交出去。

Form的下面,我们这样来写:

<script type="text/javascript">

       window.onload=function (){document.login_form.submit();};

      </script>

这样完成之后,当登陆的域用户打开上面这个页面后,页面会自动找到与该用户对应的Mantis用户名和密码,并自动Post提交登陆,从而跳过Mantislogin界面。

既然是单点登陆,就会有密码同步的问题。细心的朋友肯定会发现,当修改了第三方系统的密码后,上面这个单点登陆肯定就不行了,这是肯定的,因为我们在SSO数据库里存放的匹配密码并没有做相应修改,这部分内容我正在琢磨,怎么实现比较好。初步的设想是用Webservices来修改存放在SSO数据库里的密码,当第三方系统中的密码发生变化后,调用这个Webservices里的方法来修改SSO数据库。

   

   

从 <http://www.mosstec.cn/html/c23/2009-12/4390.htm> 插入

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值