首页 > 其他分享 >利用MOSS的SSO实现单点登陆[代码]-zt

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

时间:2023-06-08 19:01:19浏览次数:48  
标签:用户名 密码 SSO 登陆 MOSS zt aspx 页面


在这部分中,我将向大家介绍怎么来取得存放在SSO数据库中的用户名和密码,并使用它们进行POST提交登陆。

    思路是这样的,在MOSS中创建一个aspx页面,重写这个页面的Page_Load事件,也许你会说,MOSS页面里不能使用服务器端代码,鸡蛋石头飞来~~~呵呵,关于这方面的介绍,请参考我的另一个帖子:向MOSS页面中添加服务器端代码的另外一种方式,http://bbs.winos.cn/thread-48297-1-1.html,在Page_Load事件中,只有几行代码,根据当前登陆域帐户去取第三方系统Form认证的用户名和密码(在我这里是Mantis),并赋值给这个aspx页面的用户名和密码的输入框中,这两个是隐藏的,然后再在windows的onload事件中,执行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"是一个编码格式的问题,我在Post到mantis时需要,对你并不一定是必须的。引用之后,我们就可以写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>

其中,username和password是我们页面上的两个服务器端控件,下面就是我们构建的模拟提交的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地址,如图:

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

1.jpg

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

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

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

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

<script type="text/javascript">

       window.οnlοad=function (){document.login_form.submit();};

      </script>

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

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

   

标签:用户名,密码,SSO,登陆,MOSS,zt,aspx,页面
From: https://blog.51cto.com/u_4506734/6442302

相关文章

  • 在MOSS中直接嵌入ASP.NET Page zt
    在MOSSDocumentLibrary中的Page,有BasicPage和WebPartPage两种,前者更多的体现WCM特性,后者则更侧重体现Portal特性。不管是BasicPage还是WebPartPage,都是直接和MOSS本身结合非常密切,都直接采用Site中的MasterPage。如果我们想把一个普通的ASP.NETPage也加到MOSS站点里运行,......
  • SSO2.0 14-20230607
                  ......
  • 27) yuicompressor-maven-plugin 合并压缩 js css文件
    http://davidb.github.io/yuicompressor-maven-plugin/compress-mojo.html<plugin><groupId>net.alchim31.maven</groupId><artifactId>yuicompressor-maven-plugin</artifactId><version>1.5.1</......
  • SpringBoot2.x跨域问题(CrossOrigin失效问题)
    方法一SpringBoot版本的不同,CrossOrigin失效了,正确配置如下:@CrossOrigin(originPatterns="*",allowCredentials="true",maxAge=3600)方法二如果以上方法还是不生效,最后的终极方法可以进行硬编码进行跨域设置:对需要跨域的接口,进行Response对象设置可跨域URL设置(*代表......
  • SSO2.0 13-20230604
           ......
  • hbase coprocessor 官网介绍
    官网上介绍:  ApacheHBaseMain | HBaseProjectManage... »WEDNESDAYFEB01,2012CoprocessorIntroductionAuthors:TrendMicroHadoopGroup:MingjieLai,EugeneKoontz,AndrewPurtell(Theoriginalversionoftheblogwaspostedathtt......
  • 最小二乘法的矩阵正则化改进——“岭回归”和“LASSO回归”算法
    看代码过程中发现了一个很奇怪的概念,叫做“最小二乘法的矩阵正则化”,这个词汇十分的陌生,虽然最小二乘法是知道的,但是用了矩阵正则化的最小二乘法是个什么东西呢?  相关代码见:强化学习:连续控制问题中Actor-Critic算法的linearbaseline  后来在网上一通查才知道,原来“最小二乘法......
  • SSO2.0 10-20230529
                           ......
  • SSO2.0 11-20230530
           ......
  • 什么是SSO?
    1.什么是SSO?SSO(单一登录)是一种身份验证机制,它允许用户使用单一的凭据登录到多个相关应用程序或系统中。换句话说,用户只需一次登录,就可以访问多个不同的应用程序,无需为每个应用程序单独登录。2.SSO的工作原理SSO的工作原理基于身份验证和令牌的概念。当用户进行第一次登录时,他......