3

私のアプリケーションは現在基本認証を使用していますが、OAuth に移行したいので、両方のタイプの認証を使用する必要がある短い期間があります。次のように ASP.NET Core パイプラインを分岐する方法はありますか。

public void Configure(IApplicationBuilder application)
{
    application
        .Use((context, next) =>
        {
            if (context.Request.Headers.ContainsKey("Basic"))
            {
                // Basic
            }
            else if (context.Request.Headers.ContainsKey("Authorization"))
            {
                // OAuth
            }

            return next();
        })
        .UseStaticFiles()
        .UseMvc();
}

上記のように、HTTP ヘッダーを検出した場合は基本認証を使用し、それ以外の場合は OAuth を使用しています。

4

1 に答える 1

5

UseWhen技術的には、次のように使用できます。

app.UseWhen(context => context.Request.Headers.ContainsKey("Basic"), appBuilder =>
{
    // use basic middleware
} 
app.UseWhen(context => context.Request.Headers.ContainsKey("Authorization"), appBuilder =>
{
    // use oauth authentication
} 

しかし、あなたの場合、認証ミドルウェアはこれらの条件を独自の認証ハンドラー内で処理する必要があり、条件に一致しない場合はスキップします。条件を処理する必要はありません。したがって、次の認証ミドルウェアを使用できます。

app.UseBasicAuthentication();

app.UseOauthAuthentication();
于 2016-06-15T18:12:42.760 に答える