2014-10-17 105 views
5

我有一個ASP.NET網站,登錄頁面在成功驗證的情況下重定向到默認頁面。我在另一個域下有另一個ASP.NET站點,我需要放置一個登錄表單,它將已經通過身份驗證的用戶重定向到第一個網站的默認頁面。這樣做的最好方法是什麼?ASP.NET網站中的跨域登錄

任何幫助將不勝感激..

+3

不明確?真? – ChrisBint 2014-10-17 14:04:59

+0

基本問題是您沒有其他域的身份驗證令牌。但是,應該可以對第一個站點執行AJAX請求,並且無論用戶是否已登錄(如果需要,包括重定向URL),都會返回該請求。您只需使用HTTP標頭來告訴瀏覽器這是一個合法的行爲(有效的接受來源)。 – Luaan 2014-10-17 14:26:09

+0

如果您有權訪問這兩個網站上的代碼,則可以將標記添加到這兩個網站都可以理解的查詢字符串中,並將其轉換爲用於自動驗證用戶身份的信息。另一種選擇是使用適當的單點登錄,正如Joe建議的那樣。 – 2014-10-17 14:46:57

回答

0

謝謝您的答覆。我認爲我的問題不夠確切。

我解決了我的問題,使用iframe與第一個應用程序的登錄頁面作爲源。

<iframe id = "iframe1" name ="loginFrame" src="http://domain2/Login.aspx?for_web=true" onload="iframeLoaded" ></iframe> 

要重定向到所述第一站點的登錄的默認頁面,添加的OnClientClick =「formWeb.target =‘_父’;」到登錄按鈕。所以當點擊登錄按鈕時,如果認證成功,默認頁面(在另一個域下)將在同一個窗口中打開(不是一幀)

<form id="formWeb" runat="server"> 
    <asp:Button ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" OnClientClick="formWeb.target ='_parent';" /> 
</form> 
+1

你已經回答了你自己的問題,但它的值得一提的JSON網絡令牌,這些是輕量級的,並且在這個用例中是理想的 - http://jwt.io – 2014-10-21 15:06:29

1

你是什麼之後是單點登錄。在succsesful登錄重定向的機制是在web.config

這裏http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

<configuration> 
<system.web> 
<authentication mode="Forms" > 
    <!-- The name, protection, and path attributes must match 
     exactly in each Web.config file. --> 
    <forms loginUrl="login.aspx" 
    name=".ASPXFORMSAUTH" 
    protection="All" 
    path="/" 
    domain="contoso.com" 
    timeout="30" /> 
</authentication> 
<!-- Validation and decryption keys must exactly match and cannot 
    be set to "AutoGenerate". The validation and decryption 
    algorithms must also be the same. --> 
<machineKey 
    validationKey="[your key here]" 
    decryptionKey="[your key here]" 
    validation="SHA1" /> 

又見看這裏:Asp.net forms authentication and multiple domains