2012-09-21 55 views
1

我有一個SharePoint應用程序(App1),它通過ADFS身份驗證進行Passport身份驗證。我有另一個asp.net應用程序在另一個子域(App2),它也有ADFS身份驗證。從第一個應用程序中,我有一個$ .ajax(jquery)調用來控制託管在另一個應用程序中。執行靜默身份驗證時發生ADFS錯誤

問題是FedAuth Cookie沒有從App1發佈到App2。在HTTP跟蹤中,我發現FedAuth Cookie域名是特定於計算機的。在web.config「federatedAuthentication」部分 - > cookieHandler中,我提到域名爲「microsoft.com」。這解決了FedAuth在域屬性中沒有機器名稱的問題。

此更改後,我遇到了以下錯誤: ID4230:SecurityToken格式不正確。期望元素名稱'SecurityContextToken',找到'SP'。

在網上找不到幫助。嘗試改變cookieHandler的路徑和名稱屬性,但沒有解決問題。更改名稱是創建兩個FedAuth cookie。一個帶有FedAuth名字,另一個帶有新名字。

特別說明:如果在驗證後打開App1並在瀏覽器中粘貼App2的URL,那麼無聲驗證工作正常,我可以看到App2的控件。只有當我通過Ajax調用App2控件時纔會出現問題。我嘗試過使用credentials = true - > XMLHTTPRequest對象來調用$ .ajax「),但無濟於事。

任何幫助指針,使沉默認證通過Ajax調用工作正常嗎?

回答

2

以下是我的情況。 我有一個安全令牌服務提供商(STS提供商)WIF Web應用程序和 3的Web客戶端或依賴方STSClient1,STSClient2和一個SharePoint Web客戶端

,你如果所有的客戶端和stsprovider中提到我遇到了同樣的錯誤相同的域,但不是當所有域都在不同的域。

在這篇文章中http://msdn.microsoft.com/en-us/magazine/ff872350.aspx

有人提到

至於cookie的名稱和路徑,名稱默認爲FedAuth,路徑到應用程序目錄。指定cookie的唯一名稱會很有用,特別是如果解決方案中的許多RP應用程序共享相同的域名。相反,如果您希望在同一個域上的多個應用上共享Cookie,則可以選擇指定通用路徑。

讓我去每個客戶端和餅乾提供了一個獨特的名字如下

<federatedAuthentication> 
    <wsFederation passiveRedirectEnabled="true" issuer="[STSProviderURL]" realm="[ClientUrl]" requireHttps="false" /> 
    <cookieHandler requireSsl="false" name="[UniqueName]" /> 
</federatedAuthentication> 
+0

我知道我需要更改cookie名稱來解決我有一個問題,但這是隻有我能找到的東西顯示了配置設置的位置。謝謝。 –