【问题标题】:Branching ASP.NET Core Pipeline Authentication分支 ASP.NET Core 管道身份验证
【发布时间】:2016-06-15 16:46:32
【问题描述】:

我的应用程序当前正在使用基本身份验证,但我想过渡到 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。

【问题讨论】:

  • 任何人都会推荐中间件,您已经编写了它。 :)

标签: asp.net asp.net-core asp.net-core-mvc owin-middleware


【解决方案1】:

从技术上讲,您可以像这样使用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();

【讨论】:

猜你喜欢
  • 2017-03-30
  • 2018-06-25
  • 2016-05-19
  • 2018-05-13
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
相关资源
最近更新 更多