2017-06-20 20 views
1

我正在使用新鑄造的MVC應用程序爲傳統WebForms 4.61應用程序設置SSO。以下一起使用這個原始SO Post中引用的參考文獻。一旦我設置機器密鑰,表單身份驗證將停止工作

在Web窗體應用程序的Web.config如下所示:

<authentication mode="Forms"> 
    <forms loginUrl="~/account/login" timeout="120" defaultUrl="~/" /> 
</authentication> 
<roleManager enabled="true" defaultProvider="DefaultRoleProvider"> 
    <providers> 
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 
    </providers> 
</roleManager> 
<membership defaultProvider="DefaultMembershipProvider"> 
    <providers> 
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
    </providers> 
</membership> 
<httpRuntime targetFramework="4.6.1" maxRequestLength="20480" requestValidationMode="2.0" executionTimeout="300" /> 

我可以登錄,一切都如預期。但是現在我想補充以下的machineKey配置:

<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" /> 

,以替換的默認行爲(沒有指定時):但是,只要我在的machineKey條目添加到

<machineKey decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" validationKey="AutoGenerate,IsolateApps" /> 

web.config並重新運行應用程序,我無法再登錄。我使用標準的asp:Login控件來執行身份驗證。

爲什麼只要添加machineKey,認證就會停止工作?

PS。指定一個decryptKey和validationKey對行爲沒有任何影響,我無法登錄。

+0

是否有一個特定的原因,你想刪除'IsolateApps'? – mjwills

+0

「IsolateApps修飾符指定ASP.NET使用每個應用程序的應用程序ID爲每個應用程序生成一個唯一的加密密鑰」。因爲我想跨應用程序使用這個,所以我不能繼續使用這個說明符。 – TheEdge

+0

當您嘗試登錄時會發生什麼? https://stackoverflow.com/questions/21731831/changing-machinekey-prevents-login-of-existing-users/21733831#21733831有幫助嗎? – mjwills

回答

1

爲了完整起見,我在@mjwills將我的答案發布到讓他使用他引用的SO帖子的道路上。最終我發現這個SO後。

它有一個指向http://geekswithblogs.net/DavidHoerster/archive/2010/06/15/asp.net-membership-password-hash----.net-3.5-to-.net-4.aspx的鏈接,它提到默認的哈希算法改爲SHA256,作爲對.NET 4的重大改變。所以當我按照寫的舊文章談論SHA1時。

所以,如果你有一個.NET應用4,那麼只需將您的計算機密鑰如下指定時要做到:

<machineKey decryption="AES" validation="HMACSHA256" decryptionKey="AutoGenerate" validationKey="AutoGenerate" /> 

AES和HMACSHA256是用於解密的密碼爲默認設置,分別驗證。

+0

真棒,看到你解決了它。 – mjwills

相關問題