2012-08-02 109 views
1

我有一個使用被動聯合的主要網站(ADFS 2.0) 這個網站有一個使用jsonp調用MVC Web API網站的javascript。ADFS 2.0和jsonp

我想讓這個WebAPI參與單點登錄(同一臺機器,不同的端口)。然而,被動重定向打破了jsonp。 (STS返回它自己的腳本,瀏覽器呈現,我永遠不會重定向到我的響應腳本的真實url)

被動聯合與jsonp webapi兼容嗎? 如果不是,我如何在沒有用戶名/密碼憑證的情況下使用Active Federation? 即,在調用webapi之前,用戶將通過主網站進行身份驗證,那麼如何利用他們已經登錄到webapi的事實?

回答

1

當您遇到此情況時,被動聯合協議將不起作用。

你有兩個選擇:

  • 如果您的Web API被專門用於你的網站,你可以分享由WIF當用戶驗證生成的cookie。爲此,如果您使用的是不同的網站,則應該配置WIF配置中的<cookieHandler>部分以使用相同的域和路徑並使用FQDN(而不是機器名稱),以便瀏覽器將網站和API同時識別爲相同的域。

  • 第二個選項是配置Web API以提取和驗證SAML令牌(在身份驗證期間生成)。您需要做的是保存用於身份驗證的令牌(在WIF配置的<service>元素上打開saveBootstrapToken),使用claimsIdentity.GetBootrapToken()擴展方法得到該令牌,並在JavaScript調用上將該令牌附加爲HTTP頭像「授權:承載...該令牌....」。在服務器端你必須得到它並驗證令牌(以編程方式)。請注意,如果標記太大,您可能會因爲標題長度而在IIS中達到配額。

+0

謝謝! Cookie設置是我所需要的 – 2012-08-02 18:04:16