使用UseAuthentication的中间件管道

时间:2018-03-20 13:26:44

标签: c# authentication asp.net-core .net-core identityserver4

我在Startup.Configure函数

中的代码下面
app.UseMiddleware<LogMiddleware>(_loggingLevelSwitch)
 //other code
.ConfigureExceptionHandler(Logger, Configuration)
.UseIdentityServer()
.UseStaticFiles()
.UseMiddleware<ContextSetupMiddleware>()
.ConfigureMvcAndLocalization()
//other code

UseIdentityServer在内部调用UseAuthentication

我已经设置了两个方案cookie和Bearer。

我的期望是在应该调用身份验证ContextSetupMiddleware之后,否则就会发生这种情况。

对于cookie,我可以理解,因为身份验证将在稍后完成,一旦登录完成,它将按预期工作。

对于Bearer,我认为它应该是管道的一部分,因为我们向authenticationbuilder添加了一个方案。

更新

将defaultscheme设为“Bearer”,它开始按我的意愿工作。

然而,该网站有AccountLogin屏幕(基于cookie的Auth)和一些RestAPI(基于JWT的Auth)。

基于cookie的身份验证是否仅适用于AccountLogin屏幕。我无法添加[Authorize],因为它是登录scree。

1 个答案:

答案 0 :(得分:0)

实际上是设计的。如果需要任何中间件,则默认方案将覆盖,然后使用context.AuthenticateAsync()

就我而言,在ContextSetupMiddleware中只需致电context.AuthenticateAsyc()并完成身份验证。