2016-12-28 59 views
2

私は古いアプリケーションをASP.NETコア/ MVCに移行しています。このアプリケーションは、OWINミドルウェアを使用して認証を管理します。ASP.NETコア、MVC、およびOWIN

ミドルウェアは、 "UseOwinAppBuilder"を使用して登録すると完全に機能しますが、アプリケーションのいくつかの部分では認証に対応するために "Owinコンテキスト"を取得する必要があります。私はASP.NETコアに、私はHttpContext.Authentication.AuthenticateAsyncを使用して認証を管理することができます知っているが、私は

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

で前の行を交換する場合、私は受け取る

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

:「古い」コードは次のように何かをエラー:

「認証なしハンドラがスキームに認証するように設定されていない:AuthScheme」

私はエラーが認証するのでたまたま容疑者関心のあるミドルウェアは、ASP.NET CoreではなくOWINを使用して登録されました。

「OwinEnvironment」を作成して「OwinFeatureCollection」にアクセスできるオブジェクトがいくつかありますが、これが「古い」Owinコンテキストにアクセスする方法であるかどうかはわかりませんこれらのオブジェクトの仕組みに関する詳細なドキュメントは見つかりません)。

概要:登録済みのミドルウェアで認証を管理するために、ASP.NET Coreの「古い」Owinコンテキストにアクセスする方法はありますか?

答えて

0

使用している認証ミドルウェアによっては、Startup.csファイルをチェックして、認証方式の設定が正しいことを確認することができます。例えば

、あなたはASP.NETコアでクッキー認証ミドルウェアを使用している場合...あなたはJWT認証トークンを使用している場合、あなたはこのような何かを参照してくださいね

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

...

また、一般に、認証ミドルウェアには既知の定数が付属しているため、そのプロバイダのデフォルト値を使用することができます。

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

あなたの認証ミドルウェアがちょうどapp.UseMagicAuthentication()で設定されている場合、それは引数としてオプションを取る場合、あなたは確認することができます。

関連する問題