moss2007单点登入小实践
很久没来博客园唠叨了,今天刚好有空上来逛逛,顺便添加一篇实用的文章。很多人都知道MOSS自带了一个重要特性。方便企业多系统之间的集成和整合。而单点登入就成为了炙热可得的一把利剑(至于什么叫单点登入,新手如果不明白直接google吧)。不够要在MOSS上实现SSO,遇到的一个问题就是你得熟悉第三方系统的验证模式。在不清楚第三方系统是windows还是表单验证的却会给实现带来很大的麻烦。闲话不多说,下面直接贴图。
1:当前用户的信息在SSO数据库不存在时,跳转到SSO信息配置页面(也可以用SSO默认自带的页面,,我这就没截图了)
2:配置成功。笔者为了让大家看测试效果,让他显示在页面。
3:点击进入聊天室
下面来阐述下具体的实现思路:
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![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
}
24![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
protected void Page_Load(object sender, EventArgs e)
26
{
27![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
string[] rgCredentials = null;
29
try
30
{
31![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
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![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
catch (SingleSignonCredsNotFoundException ssoe)
41
{
42
//在SSO数据库中找不到当前用户的信息
43
if (SSOReturnCodes.SSO_E_CREDS_NOT_FOUND == ssoe.LastErrorCode)
44![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
{
46
string strSSOLogonFormURL=SingleSignonLocator.GetCredentialEntryUrl("chatroom");
47
lb_msg.Text = "<a href=" + strSSOLogonFormURL + ">对不起!当前数据库没有您的登入信息凭证,请创建!</a>";
48
}
49![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
}
51
}
52
}
53
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
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![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
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![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
}
25![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
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
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)