我希望使用IdentityServer4保护AspNetCore Web API。我已经成功实现了IdentityServer4,并且使用[Authorize]
属性保护MVC控制器中 方法没有问题。
然而,我无法弄清楚如何使用自定义(非MVC)中间件来强制执行安全性。例如,在我的Startup.cs中,我有:
app.Use(async (context, next) =>
{
// I want to require an authenticated user here
using (var writer = new StreamWriter(context.Response.Body))
{
await writer.WriteAsync(string.Format("Welcome to the jungle, {0}", context.User.Identity.Name);
}
});
我可以采取蛮力的方法,但很明显app.UseIdentityServer();
适合处理那么重的提升,所以我不想在这里重新发明轮子。
答案 0 :(得分:1)
我的建议是将app.UseIdentityServer()
放在自定义owin中间件之前,所有中间件将按照它们在代码中编写的顺序调用。因此,任何未经授权的用户即使在到达您的自定义中间件之前也会被过滤掉并重定向。