2012-08-01 24 views
1

我創建了2個獨立的Asp.Net應用程序。
應用1:管理員
應用2:報告
具有通用登錄(驗證)的多個ASP.NET Web應用程序

我們已經託管在IIS 7.0 管理應用。 現在我需要提供一個鏈接Admin應用程序鏈接到報告應用程序,其中我不應該再次登錄到報告應用程序。

現在我已經下聯繫應用程序創建的虛擬目錄在IIS 報告。 所以我的問題是如何爲這兩個應用程序提供一個通用的身份驗證。
注意:我使用窗體身份驗證

由於提前

回答

1

的關鍵是,你需要使用同一臺機器的關鍵,驗證密鑰和每個web.config文件中的解密密鑰。

此外,請確保您的所有表單auth參數匹配每個文件。

報告應用應指向管理應用的登錄頁面。

3

你需要做三件事情在配置方面,和每個應用程序必須匹配:

  • 已在會員和角色提供相同Application屬性,並使用同一數據庫:在add孩子applicationName屬性providermembershiproleManager。這意味着認證和授權數據將被共享。

  • 具有相同的密鑰來加密和驗證身份驗證Cookie(在machineKey元素上)。 (這也意味着登錄將生存的應用程序池重新啓動,因爲新的密鑰將無法在每個應用程序開始時產生)。

  • 同時擁有應用程序使用相同的name屬性forms元素應用,因此使用相同的cookie。

[更新與查找分辯屬性之後第三個點。]

+0

只是想知道,你測試了這種方法的生產? – Jupaol 2012-08-01 14:05:22

+0

@Jupaol:不,我已經用過1分和2分,但不是第三部分。此外,任何人僅僅使用網絡上的一些信息而不進行測試就會得到他們應得的。 – Richard 2012-08-01 14:23:48

2

您可能希望在管理應用程序下的應用程序,而不是虛擬目錄。

您將需要在web.config

這兩個應用程序應該共享一個共同的machineKey設置enableCrossAppRedirects =「真」。這裏有一個生成machineKey的工具: http://aspnetresources.com/tools/machineKey

Web示例。配置項:

<authentication mode="Forms"> 
    <forms name=".ASPNETAUTH" 
     enableCrossAppRedirects="true" 
     loginUrl="Login.aspx" 
     protection="All" 
     path="/" 
     timeout="60" /> 
</authentication> 


<machineKey validationKey='F1D92DF9B41E5D94E79946A10494F52FF26956F256667DB52E9FA9B30E6A4FF61E4C05F1AC2795330F34B7B1389E1BD75FD0D3DCD12E991BD09B9AD004C0FE0D' 
      decryptionKey='B8940FB4A776EABD1525E7D9B58E9E5DE057B2F2A67AA913' 
      validation='SHA1'/> 
相關問題