基于SharePoint的单点登录的实现
2010-10-17 22:24
465 查看
单点登录(Single Sign On),简称为 SSO。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
在Microsoft Office SharePoint Server 2007中提供了实现单点登录的功能。
下面是一个具体的实例,其实类似的实现网上有很多。
一、配置数据源
用于存储用户对于第三方企业应用程序的登录凭据,可以将该凭据记录到数据库中,sharepoint列表项以及sharepoint本身的数据库中。下面介绍存储于SSO数据库中的方法。
1. 配置开启Microsoft Single Sign-on Service服务。
SSO的应用是利用了Microsoft Single Sign-on Service的服务,默认此服务为停止状态。选择开始程序管理工具服务,选取Microsoft Single Sign-on Service服务, 如图所示;
默认此服务为关闭状态,双击此服务。如下图,选择登录选项卡,登录身份选择“此帐户”,在其中输入账户及密码。注意此账户为域用户。(否则SSO调用会失败)。
选择“常规”选项卡,启动类型选择为“自动”,并启动此服务。状态如下:
2. 配置“管理单一登录的设置”。
2.1配置“服务器设置”
配置好SSO的服务后,开始配置管理单一登录的设置。开始→程序→Microsoft Office ServerSharePoint 3.0管理中心。在管理中心,选取“操作选项卡”,并选择“安全性配置”中的“管理单一登录的设置”。如下图:
默认进入后,“服务器设置”和“企业应用程序定义设置”均未进行设置。首先设置服务器设置,选择设置“管理服务器设置”。如下:
在“单一登录管理员帐户”和“企业应用程序定义管理员帐户”中填写对应的账户名。“数据库设置”和“超时设置”均为默认,
。如图:
注意:如果确定后提示“数据库错误”,则在“数据库设置”中将“服务器名称”修改为你的存取MOSS的SQL2005服务器的名称。
关于“管理加密密钥”,在本测试中没有加入此功能。此加密密钥对凭证加密。在普通的应用中丌用增加此功能。
2.2配置“企业应用程序定义设置”。
“管理企业应用程序定义的设置”指集成SSO的后端应用的设置,如ERP,OA,Mail等等应用系统。
进入“管理企业应用程序定义的设置”;如下图:
选取新建项目,
,填写“应用程序和联系人信息”和选择“帐户类型”信息。以新浪邮箱为例,如图:
其中“显示名称:”为后端应用系统的名字,而“显示名称:”则为GetCredentials获取的值。账户类型中选择“个人”,
,因为这里SSO账户为MOSS用户和后端应用系统的用户映射。其他信息默认,确定。
配置“管理企业应用程序定义的帐户信息”,选取“企业应用程序定义:”填写
“用户帐号名称”。注意:(如果对应的“管理企业应用程序定义的设置”中将账户类型确定为“组”则输入组账号。)
选取“更新账户信息”,确定
。如图:
在“提供 网易163邮箱 帐户信息”页面中输入对应MOSS帐号的163邮箱的帐号和密码,确定,
如图:
二、写程序完成单点登录。
1. 取得连接字符串
首先进入163登录邮箱页面,输入自己的用户名与密码,打开HttpWatchPro软件(可在网上下载),点击开始记录按钮→点击163邮箱的登录按钮,登录成功后,再停止HttpWatchPro的记录。将查到的Http请求字符串复制下来,如下:“http://reg.163.com/login.jsp?url=&type=1&product=&savelogin=&outfoxer=&domains=&syscheckcode=&username=mossadmin@163.com&password=111111&Submit=”。在该字符串中有两个参数username与password既是登录邮箱时输入的用户名与密码。
2. 新建webpart登录程序。
打开Microsoft Visual Studio 2005,新建ASP.NET Web应用程序,命名为FirstSSO。此为安装了Visual Studio 2005 Service Pack 1 (SP1)。
删除默认的Default.aspx页面。
在此项目中添加Web用户控件页面,命名为MeSSO,如下:
在MeSSO的设计试图中加入按钮,界面如下:
源代码为:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MeSSO.ascx.cs" Inherits="MeSSO" %>
<asp:Button ID="Btn163" runat="server" Text="网易163邮箱=>进入" Width="130px" />
双击按钮控件,进入源代码编写页面。在此项目中添加引用,分别添加对Microsoft.SharePoint.dll,microsoft.sharepoint.portal.dll、Microsoft.SharePoint.Portal.SingleSignon.dll的引用。
目录为C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI文件夹中。
如图:
添加对Microsoft.SharePoint,microsoft.sharepoint.portal,Microsoft.SharePoint.Portal.SingleSignon的引用。源代码如下:
3. 将完成的webpart部署到sharepoint网站,完成。
在Microsoft Office SharePoint Server 2007中提供了实现单点登录的功能。
下面是一个具体的实例,其实类似的实现网上有很多。
一、配置数据源
用于存储用户对于第三方企业应用程序的登录凭据,可以将该凭据记录到数据库中,sharepoint列表项以及sharepoint本身的数据库中。下面介绍存储于SSO数据库中的方法。
1. 配置开启Microsoft Single Sign-on Service服务。
SSO的应用是利用了Microsoft Single Sign-on Service的服务,默认此服务为停止状态。选择开始程序管理工具服务,选取Microsoft Single Sign-on Service服务, 如图所示;
默认此服务为关闭状态,双击此服务。如下图,选择登录选项卡,登录身份选择“此帐户”,在其中输入账户及密码。注意此账户为域用户。(否则SSO调用会失败)。
选择“常规”选项卡,启动类型选择为“自动”,并启动此服务。状态如下:
2. 配置“管理单一登录的设置”。
2.1配置“服务器设置”
配置好SSO的服务后,开始配置管理单一登录的设置。开始→程序→Microsoft Office ServerSharePoint 3.0管理中心。在管理中心,选取“操作选项卡”,并选择“安全性配置”中的“管理单一登录的设置”。如下图:
默认进入后,“服务器设置”和“企业应用程序定义设置”均未进行设置。首先设置服务器设置,选择设置“管理服务器设置”。如下:
在“单一登录管理员帐户”和“企业应用程序定义管理员帐户”中填写对应的账户名。“数据库设置”和“超时设置”均为默认,
。如图:
注意:如果确定后提示“数据库错误”,则在“数据库设置”中将“服务器名称”修改为你的存取MOSS的SQL2005服务器的名称。
关于“管理加密密钥”,在本测试中没有加入此功能。此加密密钥对凭证加密。在普通的应用中丌用增加此功能。
2.2配置“企业应用程序定义设置”。
“管理企业应用程序定义的设置”指集成SSO的后端应用的设置,如ERP,OA,Mail等等应用系统。
进入“管理企业应用程序定义的设置”;如下图:
选取新建项目,
,填写“应用程序和联系人信息”和选择“帐户类型”信息。以新浪邮箱为例,如图:
其中“显示名称:”为后端应用系统的名字,而“显示名称:”则为GetCredentials获取的值。账户类型中选择“个人”,
,因为这里SSO账户为MOSS用户和后端应用系统的用户映射。其他信息默认,确定。
配置“管理企业应用程序定义的帐户信息”,选取“企业应用程序定义:”填写
“用户帐号名称”。注意:(如果对应的“管理企业应用程序定义的设置”中将账户类型确定为“组”则输入组账号。)
选取“更新账户信息”,确定
。如图:
在“提供 网易163邮箱 帐户信息”页面中输入对应MOSS帐号的163邮箱的帐号和密码,确定,
如图:
二、写程序完成单点登录。
1. 取得连接字符串
首先进入163登录邮箱页面,输入自己的用户名与密码,打开HttpWatchPro软件(可在网上下载),点击开始记录按钮→点击163邮箱的登录按钮,登录成功后,再停止HttpWatchPro的记录。将查到的Http请求字符串复制下来,如下:“http://reg.163.com/login.jsp?url=&type=1&product=&savelogin=&outfoxer=&domains=&syscheckcode=&username=mossadmin@163.com&password=111111&Submit=”。在该字符串中有两个参数username与password既是登录邮箱时输入的用户名与密码。
2. 新建webpart登录程序。
打开Microsoft Visual Studio 2005,新建ASP.NET Web应用程序,命名为FirstSSO。此为安装了Visual Studio 2005 Service Pack 1 (SP1)。
删除默认的Default.aspx页面。
在此项目中添加Web用户控件页面,命名为MeSSO,如下:
在MeSSO的设计试图中加入按钮,界面如下:
源代码为:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MeSSO.ascx.cs" Inherits="MeSSO" %>
<asp:Button ID="Btn163" runat="server" Text="网易163邮箱=>进入" Width="130px" />
双击按钮控件,进入源代码编写页面。在此项目中添加引用,分别添加对Microsoft.SharePoint.dll,microsoft.sharepoint.portal.dll、Microsoft.SharePoint.Portal.SingleSignon.dll的引用。
目录为C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI文件夹中。
如图:
添加对Microsoft.SharePoint,microsoft.sharepoint.portal,Microsoft.SharePoint.Portal.SingleSignon的引用。源代码如下:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Microsoft.SharePoint; using Microsoft.SharePoint.Portal; using Microsoft.SharePoint.Portal.SingleSignon; namespace FirstSSO { public partial class MeSSO : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } protected override void OnInit(EventArgs e) { base.OnInit(e); SSOCanaryChecker.AddCanary(Page); } protected void BtnGoogle_Click(object sender, EventArgs e) { IntPtr pUserName = IntPtr.Zero; IntPtr pPassword = IntPtr.Zero; try { ISsoProvider isso = SsoProviderFactory.GetSsoProvider(); SsoCredentials myCreds = isso.GetCredentials("GoogleMail"); 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); String strHttpUrl = "http://reg.163.com/login.jsp?url=&type=1&product=&savelogin=&outfoxer=&domains=&syscheckcode=&username=" + userName + "@163.com&password=" + Password +"&Submit="; Response.Redirect(strHttpUrl) } catch (Exception exx) { Response.Write(exx.Message); Response.Write(exx.InnerException); } finally { if (IntPtr.Zero != pUserName) { System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(pUserName); System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(pPassword); } } } } }
3. 将完成的webpart部署到sharepoint网站,完成。
相关文章推荐
- 基于SharePoint的单点登录的实现
- 基于SharePoint的单点登录的实现
- SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录SP站点
- 基于SharePoint的单点登录的实现
- 基于SharePoint的单点登录的实现
- 基于CAS的SSO单点登录-实现ajax跨域访问的自动登录(也相当于超时重连)(部分转载)
- jQuery基于ajax实现页面加载后检查用户登录状态的方法
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- 基于对话框的MFC登录界面实现(MySQl数据库ODBC连接)
- sharepoint 2013基于AD的Form表单登录(一)——登录配置
- 基于Windows Azure 安装SharePoint 2013和如何实现与CRM(Dynamics)的数据交互。
- sharepoint 2013基于AD的Form表单登录(四)——开发自定义登录过程需要引用文件路径。
- Sharepoint 2010 Form 身份认证的实现(基于AD)
- 基于springMVC实现登录过滤器
- Spring Security调研记录【五】--基于Cas实现单点登录
- 基于权限安全框架Shiro的登录验证功能实现
- 基于SSH2框架AspectJ的登录登出日志实现
- Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)
- 分享一个用Xcode4实现基于Webservice用户登录的iphone程序
- 基于CAS实现单点登录(SSO):工作原理