moss2007单点登入小实践

系统 1730 0

很久没来博客园唠叨了,今天刚好有空上来逛逛,顺便添加一篇实用的文章。很多人都知道MOSS自带了一个重要特性。方便企业多系统之间的集成和整合。而单点登入就成为了炙热可得的一把利剑(至于什么叫单点登入,新手如果不明白直接google吧)。不够要在MOSS上实现SSO,遇到的一个问题就是你得熟悉第三方系统的验证模式。在不清楚第三方系统是windows还是表单验证的却会给实现带来很大的麻烦。闲话不多说,下面直接贴图。
1:当前用户的信息在SSO数据库不存在时,跳转到SSO信息配置页面(也可以用SSO默认自带的页面,,我这就没截图了)

moss2007单点登入小实践
2:配置成功。笔者为了让大家看测试效果,让他显示在页面。



3:点击进入聊天室
moss2007单点登入小实践
下面来阐述下具体的实现思路:
1:知道要继承单点登入的第三方系统的验证方式,然后单点登入提交的方式一般用到POST 或GET 进行提交。
2:主要用到SSO 中的Credentials类的两个方法分别为:SetCredentials(配置单点登入信息)。GetCredentials(获取用户的配置信息)
实现的方式:A首先打开管理中心-操作-单点登入配置。进行SSO的相关设置。
这块的资料网上也很多,配置步骤可以直接借鉴 十一的博客
B:新建一个web应用程序
笔者在这新建两个页面:Getusermsg.ascx 和ssowebpart.ascx.添加Microsoft.Sharepoint.Portal.SingleSingon.dll ,Microsoft.Sharepoint.Portal.dll
代码如下:
Getusermsg.cs
注意:下面代码中第三方系统的url配置记得改成自己的配置。

 1 using  System;
 2 using  System.Data;
 3 using  System.Configuration;
 4 using  System.Collections;
 5 using  System.Web;
 6 using  System.Web.Security;
 7 using  System.Web.UI;
 8 using  System.Web.UI.WebControls;
 9 using  System.Web.UI.WebControls.WebParts;
10 using  System.Web.UI.HtmlControls;
11 using  Microsoft.SharePoint;
12 using  Microsoft.SharePoint.Portal;
13 using  Microsoft.SharePoint.Portal.SingleSignon;
14 namespace  SSOwebpart
15 {
16      public   partial   class  Getusermsg : System.Web.UI.UserControl
17      {
18          protected   override   void  OnInit(EventArgs e)
19          {
20              base .OnInit(e);
21             SSOCanaryChecker.AddCanary( this .Page);
22
23         }

24
25          protected   void  Page_Load( object  sender, EventArgs e)
26          {
27
28              string [] rgCredentials  =   null ;
29              try
30              {
31
32                 Credentials.GetCredentials( 1 " chatroom " ref  rgCredentials);
33                 lb_username.Text  =  rgCredentials[ 0 ].ToString();
34                 lb_pwd.Text  =  rgCredentials[ 1 ].ToString();
35                  string  url  =   " /chatroom/sso_login.asp?name= "   +  lb_username.Text  +   " &pwd= "   +  lb_pwd.Text +   "" ;
36                 lb_msg.Text  =   " <a href= " + url + "  target='_blank'>进入聊天室</a> " ;
37                 
38             }

39
40              catch  (SingleSignonCredsNotFoundException ssoe) 
41             
42                  // 在SSO数据库中找不到当前用户的信息
43                 if  (SSOReturnCodes.SSO_E_CREDS_NOT_FOUND  ==  ssoe.LastErrorCode) 
44
45                  {
46                      string  strSSOLogonFormURL = SingleSignonLocator.GetCredentialEntryUrl( " chatroom " );
47                     lb_msg.Text  =   " <a href= "   +  strSSOLogonFormURL  +   " >对不起!当前数据库没有您的登入信息凭证,请创建!</a> " ;
48                 }

49
50              }
 
51         }

52     }

53 }

ssowebpart.cs

 1 using  System;
 2 using  System.Collections;
 3 using  System.Configuration;
 4 using  System.Data;
 5 // using System.Linq;
 6 using  System.Web;
 7 using  System.Web.Security;
 8 using  System.Web.UI;
 9 using  System.Web.UI.HtmlControls;
10 using  System.Web.UI.WebControls;
11 using  System.Web.UI.WebControls.WebParts;
12 using  System.Xml.Linq;
13 using  Microsoft.SharePoint;
14 using  Microsoft.SharePoint.Portal;
15 using  Microsoft.SharePoint.Portal.SingleSignon;
16
17 namespace  SSOwebpart
18 {
19      public   partial   class  ssowebpart : System.Web.UI.UserControl
20      {
21          protected   void  Page_Load( object  sender, EventArgs e)
22          {
23
24         }

25
26
27          // 单点登入用户配置
28          protected   void  btn_save_Click( object  sender, EventArgs e)
29          {
30              if  (txt_username.Text  ==   ""   ||  txt_username.Text  ==   null )
31              {
32                 lb_msg.Text  =   " 请输入用户名! " ;
33                  return ;
34               
35             }

36              if  (txt_pwd.Text  ==   ""   ||  txt_pwd.Text  ==   null )
37              {
38                 lb_msg.Text  =   " 密码不为空! " ;
39                  return ;
40             
41             }

42              string [] rgSetCredentialData  =   new   string [ 2 ];
43             rgSetCredentialData[ 0 =   this .txt_username.Text;
44             rgSetCredentialData[ 1 =   this .txt_pwd.Text;
45              try
46              {
47                Credentials.SetCredentials( 1 " chatroom " , rgSetCredentialData);
48             }

49              catch  (SingleSignonException esso)
50              {
51                  this .lb_msg.Text  =  esso.Message  +   " <br> "   +  esso.StackTrace;
52             }

53         }

54     }

55 }


DEMO文件

moss2007单点登入小实践


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论