基于SharePoint 2007做个单点登录,找了很多资料,SSO的配置、获取SSO中应用程序凭据,这些都有很多资料介绍,但是木有怎样将用户凭据存入SSO中,这个很关键,不可能所有用户凭据都由管理员来输入,今天主要是介绍一些怎样将用户凭据存入SSO。
- SSO配置
进入SharePoint服务器,进入服务管理界面,设置“Microsoft Single Sign-on Service ”服务为自动模式,同时已启动。
进入管理中心,点击左侧导航“操作”按钮。然后在页面右侧点击“管理单一登录的设置”,进入管理单一登录页面。
点击“管理服务器设置”,进入服务器设置页面。
首先输入“单一登录管理员账号”、“企业应用程序定义管理员账户”、“数据库设置”,然后点击确定按钮。
点击“管理加密密钥”,然后点击创建加密密钥。
进入管理企业应用程序页面,点击新建按钮。
首先输入“显示名称”,“应用程序名称”,“账户类型”的值,应用程序名称为Mail,账户类型为个人,点击保存。
进入管理企业应用程序的账户信息页面,可以修改用户在应用中的账号和密码。
- SSO页面
添加引用
using Microsoft.SharePoint;
using Microsoft.SharePoint.Portal;
using Microsoft.SharePoint.Portal.SingleSignon;
protected override void OnInit(EventArgs e) {
base.OnInit(e);
SSOCanaryChecker.AddCanary(Page);
}
获取用户凭证
IntPtr pUserName = IntPtr.Zero;
IntPtr pPassword = IntPtr.Zero; String strHttpUrl = string.Empty; try
{
ISsoProvider isso = SsoProviderFactory.GetSsoProvider();
SsoCredentials myCreds = isso.GetCredentials("Mail");
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);
添加用户凭证
Credentials x = new Credentials();
string[] rgSetCredentialData = new string[2];
string strUserName = txtUserName.Text;
string strPassword = txtPassword.Text;
rgSetCredentialData[0] = strUserName;
rgSetCredentialData[1] = strPassword;
Credentials.SetCredentials(Convert.ToUInt32(1), "Mail", rgSetCredentialData);