2016-12-28 211 views
2

我正在將舊應用程序遷移到ASP.NET核心/ MVC。此應用程序使用一些OWIN中間件來管理身份驗證。ASP.NET Core,MVC和OWIN

中間件在使用「UseOwinAppBuilder」進行註冊時完美地工作,但是在我需要獲得「Owin上下文」以使其能夠使用身份驗證的應用程序的某些部分中。 「老字號」的代碼確實是這樣的:

var context = Request.GetOwinContext(); 
var authentication = context.Authentication.AuthenticateAsync("AuthScheme"); 

我知道,在ASP.NET的核心,我可以使用管理的HttpContext.Authentication.AuthenticateAsync認證,但如果我通過

var authentication = HttpContext.Authenticaiton.AuthenticateAsync("AuthScheme"); 

取代以前行,收到錯誤:

「無驗證處理器,配置方案驗證:AuthScheme」

我懷疑發生了錯誤,因爲AUTH誘導中間件使用OWIN註冊,而不是在ASP.NET Core中註冊。

我知道有一些對象允許創建一個「OwinEnvironment」並訪問一個「OwinFeatureCollection」,但我不確定這是否可以訪問「舊」Owin上下文(以及我不知道沒有找到關於這些對象如何工作的詳細文檔)。

作爲概述:是否有某種方法可以訪問ASP.NET Core中的「舊」Owin上下文,以管理使用註冊中間件的身份驗證?

回答

0

根據您使用的middelware身份驗證,您可能需要檢查Startup.cs文件以確保身份驗證方案設置正確。

例如,如果您使用的是ASP.NET核心cookie認證的中間件...

var testOptions = new CookieAuthenticationOptions() 
{ 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = false, 
    SessionStore = new CacheTicketStore(cache), 
    AuthenticationScheme = "AuthScheme" 
}; 
app.UseCookieAuthentication(testOptions); 

如果您使用JWT令牌認證,你會看到這樣的事情...

app.UseJwtBearerAuthentication(new JwtBearerOptions 
{ 
    // authority and app id settings omitted 
    AuthenticationScheme = "AuthScheme" 
}); 

認證中間件通常還帶有一些衆所周知的常量,因此您可以使用該提供程序的默認值。

using Microsoft.AspNetCore.Authentication.Cookies; 
... 
context.Authentication.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme); 

如果您的驗證中間件正好被設置了app.UseMagicAuthentication(),您可以檢查,如果它需要的選項作爲參數。