基於SharePoint的單點登入的實現

來源:互聯網
上載者:User

      單點登入(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的引用。原始碼如下:

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網站,完成。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.