2008-10-28 89 views

回答

4

我的假設是您可以完全控制您的php應用程序/域,但另一個團隊正在管理SharePoint服務器。另外假設您可以要求SharePoint團隊爲您的SSO功能創建一個簡單的Web部件。

如果是這種情況,您可以要求sharepoint團隊創建一個帶有指向您網站鏈接的web部件。當用戶點擊鏈接時,請求返回到Sharepoint服務器,Sharepoint服務器獲取用戶的登錄名,使用公鑰對其進行加密,然後將其添加到您的PHP網站上的url,然後將其作爲重定向返回到瀏覽器。因此,位置看起來是這樣的:

https://your.php.domain/sso.php?logon=encrypted_users_logon_name&api_key=some_token

你sso.php腳本將驗證API_KEY是從SharePoint合作伙伴有效令牌,然後解密用戶的登錄名試圖讓您可以。獲得更多幻想,並在SharePoint站點上回調以確認登錄請求在某個時間窗口內是合法的,或者將其燒入加密的登錄名中,但這是一種準備工作,假設您信任來自分享點合作伙伴。

sharepoint.net開發人員可能會做任何你想要的加密,所以選擇一個你可以在php和.net端使用的算法,並給他們使用加密的密鑰,以及信息的格式加密。像n = logon_name; expire = timestamp;那麼當你解密的時候,如果它是在到期時間之後,那麼你拒絕登錄。

+0

聽起來不錯。我將在接下來的幾天內給出這個答案。謝謝! – ciscocert 2008-10-28 20:17:53

1

我對這方面不太瞭解,但希望這可能有助於您指引正確的方向。

調查LDAP ...

您可以設置PHP來使用LDAP憑據。如果您的SharePoint網站使用Active Directory,則可以將此目錄作爲LDAP源公開並在PHP應用程序中使用。

自動登錄...

具有標誌在每個站點之間自動發生的是一個非常不同的事情。例如我已經登錄到MOSS,點擊一個鏈接到PHP應用程序,並發現我已經登錄了。爲此,您需要使用Kerberos密鑰/身份驗證等方式進行調查。這是一個混亂和困難的地區。

+0

您能否詳細解釋LDAP方法?我設法從PHP連接到LDAP,但從這一點上我迷路了 – bloomingsmilez 2015-05-06 09:04:36

0

好吧,我們一直處於同樣的情況,但是我們正在使用asp.net和php結合使用SSO。 asp.net代碼執行windows身份驗證,並在mysql數據庫中創建一個包含用戶名和唯一鍵的記錄,並將這些值分配給cookie。然後,將用戶重定向到PHP應用程序。

php應用程序讀取這些cookie值並將它們與數據庫值進行比較以確保請求可信。以及這是PHP的單點登錄的解決方法,並與PHP共享點共同工作。但我仍然建議在php中使用Kerb_auth_mod進行SSO。我們最終做到了。