我需要使用表單身份驗證將Facebook(以及後來的google等)身份驗證添加到現有的asp.net webforms應用程序。Formsauthentication和owin facebook身份驗證(網頁表單)
我幾乎在那裏,但似乎有formauthentication和owin認證之間的衝突。我的解決方案基於標準VS 2015模板。
相關的代碼重定向到外部認證提供者(Facebook)的如下:
string redirectUrl =
ResolveUrl(String.Format(CultureInfo.InvariantCulture,
"~/Account/RegisterExternalLogin?{0}={1}&returnUrl={2}", IdentityHelper.ProviderNameKey,
provider, ReturnUrl));
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
Context.GetOwinContext().Authentication.Challenge(properties, provider);
Response.StatusCode = 401;
Response.End();
這工作,如果我關閉形式的身份驗證。如果我有窗體身份驗證,用戶被重定向到web.config中定義窗體身份驗證網址:
<authentication mode="Forms">
<forms name=".ASPXAUTH_Test" loginUrl="~/start/login.aspx" timeout="60" >
</forms>
</authentication>
從我understandint的HTTP狀態代碼(401)觸發重定向到URL在web.config 。我試圖設置其他狀態碼,但它們根本不工作。 當我在web.config中關閉表單身份驗證時,實際的登錄過程仍然有效(令人驚訝),但是如果我在未登錄的情況下訪問受保護的頁面,請獲取一個醜陋的IIS錯誤頁面,而不是重定向。
看來,我不能讓工作窗體身份驗證和owin外部認證,共同妥善:-(
工作,到目前爲止,所有的選擇似乎並不誘人的對我說: - 切換到身份框架(在我們的特定環境中,這絕對不是一種選擇,我只是爲了完整而提及它) - 嘗試使用web.api或類似的東西(這可能具有相同的問題) - 放開owin外部認證並用手執行所有事情
有沒有人能夠使這項工作?任何幫助表示感謝。 提前。