MOSS2010单点登录
進入管理中心》應用程序管理》
?
然后找到? Secure Store Service 應用程序代理
然后就是新建了
?
輸入系統(tǒng)賬戶
這個時候SharePoint就知道你需要給OA這個系統(tǒng)做單點登錄了。
下一步就是我們要把我們進OA系統(tǒng)的帳號密碼告訴SharePoint,讓他記住當前登錄域賬戶所存的OA賬戶。
下面我們模擬一下OA系統(tǒng)登錄頁面
<html><body><form id=form1 action='dologin.aspx'> <input type='text' name='name'/> <input type='password' name='pwd'/><input type='submit' value='login'/> </form> </body> </html>OA的主頁是http://OA/index.aspx 這是一個簡單的登錄頁面代碼,我們從代碼得知,
這個form要提交的頁面是 http://OA/dologin.aspx? ,
登錄名name
密碼pwd
?
那我們登錄也需要這幾個元素。在我們的moss中創(chuàng)建一個列表SSOList。
應用程序名稱,就是一個顯示用的,好讓你知道是啥系統(tǒng),SSPkey就是我們前面創(chuàng)建的OA 唯一標識。。。你懂得。
那下一步我們就該寫代碼了。
先整理下思路,我要先在SSOList這個列表中讀出來我們登錄的系統(tǒng)。
比如讀取列表 然后拼出來,這個你懂得,我就不寫了。
我們有OA的登錄信息了,也有在管理中心建立OA了,那一步我們是不是改往SSO里面存儲登錄的帳號密碼了?
比如我們OA的賬戶:zhangsan密碼:123456
這個時候我們創(chuàng)建一個webpart。然后創(chuàng)建一個應用程序頁面 aspx。
這個頁面是專門來存賬戶和密碼的。
/// <summary>/// 在SSO中存儲當前登錄用戶的配置的第三方系統(tǒng)單點登錄的帳號和密碼/// </summary>/// <param name="ssosetting"></param>private void InsertSSO(string ssokey,string loginname,string loginpwd){string userloginname = SPContext.Current.Web.CurrentUser.LoginName;if (!string.IsNullOrEmpty(ssokey) && !string.IsNullOrEmpty(loginname) && !string.IsNullOrEmpty(loginpwd)){string[] userinfo = { loginname, loginpwd};SetUserCredentials(ssokey, userinfo, userloginname);}}/// <summary> /// 設置指定用戶的登陸憑據(jù) /// </summary> /// <param name="appId">業(yè)務系統(tǒng)標識</param> /// <param name="userInfo">憑據(jù)信息</param> /// <param name="userLoginName">MOSS登陸帳號: domainName\LoginName</param> public static void SetUserCredentials(string appId, string[] userInfo, string userLoginName){try{SPSecurity.RunWithElevatedPrivileges(delegate(){List<SecureStoreCredential> creds = new List<SecureStoreCredential>();SecureStoreCredential name = new SecureStoreCredential(toSecureString(userInfo[0]), SecureStoreCredentialType.UserName);SecureStoreCredential pwd = new SecureStoreCredential(toSecureString(userInfo[1]), SecureStoreCredentialType.Password);creds.Add(name);creds.Add(pwd);SecureStoreCredentialCollection credes = new SecureStoreCredentialCollection(creds.ToArray());SecureStoreServiceProxy proxySs = new SecureStoreServiceProxy();SPContext.Current.Site.AllowUnsafeUpdates = true;SPContext.Current.Web.AllowUnsafeUpdates = true;SPServiceContext context = SPServiceContext.GetContext(SPContext.Current.Site);ISecureStore store = proxySs.GetSecureStore(context);SPClaim claim = SPClaimProviderManager.Local.ConvertIdentifierToClaim(userLoginName, SPIdentifierTypes.WindowsSamAccountName);store.SetUserCredentials(appId, new SecureStoreServiceClaim(claim), credes);});}catch { }}這個方法就會把你當前登錄人對應OA的賬戶密碼儲存在moss的OA里面
OK,現(xiàn)在賬戶也存儲了,列表也有了。下一步就是登錄了。
在新建一個頁面SSOSignOn.aspx
我們不是把列表里面的數(shù)據(jù)讀出來了嗎?下一步點這個OA連接跳轉到SSOSignOn.aspx頁面。
需要傳幾個參數(shù),登錄請求頁面,賬戶的name值。密碼的name值。登錄成功后跳轉的頁面。雖然我們登錄后,OA系統(tǒng)會自動跳轉到登錄成功頁面,
之所以這么做。是因為我們的單點登錄不是都要登錄OA首頁的,比如我們要直接登錄到OA的其他功能模塊。
這個時候我們就不能登錄成功后,還到OA首頁了吧。
言歸正傳,我們SSOSignOn.aspx頁面要處理些什么呢?
模擬OA的登錄頁面登錄。
QQ群:69022156?
轉載于:https://www.cnblogs.com/NetUser/archive/2012/03/13/2393857.html
總結
以上是生活随笔為你收集整理的MOSS2010单点登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量解决冲突
- 下一篇: pku3020 Antenna Pl