2017-04-02 320 views
3

我有一個基於DNN(一堆DNN模塊)的應用程序,並希望逐漸將此應用程序遷移到純ASP.NET內核。 (遠離DNN) 我只依賴於DNN用戶管理和導航,其餘的基本都是純ASP.NET Web Forms。 (或更好:DNN中的網頁用戶控制)從DotNetNuke遷移到ASP.NET Core

該計劃是創建一個全新的應用程序(不同的子域),並首先將我的用戶管理遷移到.NET Core Identity。用戶將通過新應用程序登錄,並且需要在遷移期間在覈心應用程序和DNN之間切換。我想使用基於身份的新機制,並且必須保持用戶與基於DNN成員資格的表同步,直到我可以棄用最後一個DNN模塊。

來自:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity 看來,身份創建自己的cookie與DNN完全不同。 有誰知道創建一個共享cookie的方法,可以讓用戶從舊應用移動到新應用而無需登錄兩次? 還是有更好的方法來實現這個功能?

UPDATE: 做更多的研究,在這一點上,似乎更有意義,在2個階段分裂這個項目了: 1.使用MVC 5(穩定) 2.遷移MVC 5的新應用經過一段時間的應用程序到.NET Core

在這種情況下,使用OWIN身份驗證的MVC 5仍然存在問題。是否有可能在MVC和DNN之間創建一個共享的auth cookie?

+0

看這個帖子: [鏈接](https://blogs.msdn.microsoft.com/webdev/2013/07/03/understanding-owin-forms-authentication-in-mvc-5/)看起來這不容易。 DotNetNuke需要一個非常特定的cookie,其中包含用MachineKey(來自web.config)加密的用戶名。不知道是否可以爲此定製owin cookie。 – Dabixi

回答

0

對於有同樣問題的人,我發現我想做的事是不可能的。身份驗證Cookie的格式已經通過OWIN進行了更改,並且沒有向前兼容以前的FormsAuthentication。

我能夠創建一個具有相同名稱,MachineKey加密等的OWIN cookie,但內容不同,DNN不會識別這個。

我將不得不在我的遷移中添加額外的階段。 1.創建一個新的應用與MVC 5,但使用舊窗體身份驗證 2.所有的模塊都遷移後,我就可以移動到OWIN 3.遷移到ASP.NET核心

+0

[此鏈接](https://github.com/aspnet/Security/issues/617)可能會有幫助 – Dabixi

+0

仍然花了一些時間在這個,只是張貼我迄今發現的東西。 – Dabixi

+0

這裏是[OWIN Cookie格式的描述](http://tech.trailmax.info/2014/08/aspnet-identity-cookie-format/)。我發現了另一篇關於如何[更改cookie格式]的文章(http://www.alexboyang.com/2014/05/28/sso-for-asp-net-mvc4-and-mvc5-web-apps- shared-the-same-domain /),我終於可以創建一個由DotNetNuke識別的cookie,並在MVC 5和DNN 8之間提供SSO。唯一的問題是格式更改使Cookie對Identity框架無用。 – Dabixi