【问题标题】:OWIN static files securityOWIN 静态文件安全
【发布时间】:2015-01-25 10:34:05
【问题描述】:
我正在构建一个 SPA,它将位于一个 WebAPI/OWIN 应用程序(将托管在 IIS 中)中,该应用程序目前没有任何 MVC 组件,/ 路由将只是 index.html。
整个站点需要您登录 Azure AD,然后您才能执行任何操作,然后我们会将不记名令牌传递给进行的 WebAPI 调用。
如何使对静态文件(或至少每个 HTML 文件)的每个请求都要求您登录?
【问题讨论】:
标签:
azure
asp.net-web-api
single-page-application
owin
【解决方案1】:
我会告诉你我是如何做到的,以及它对我的作用。
我正在使用 Windows 身份验证,这是我的配置方式:
OwinHttpListener listener = appBuilder.Properties[typeof(OwinHttpListener).FullName] as OwinHttpListener;
listener.Listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
然后,根据this stackoverflow answer,将以下代码放在您的身份验证中间件(或类似上述代码的身份验证代码)和您要保护的组件之间。它将检查以确保每个请求都经过身份验证。
app.Use(async (context, next) =>
{
var user = context.Authentication.User;
if (user == null || user.Identity == null || !user.Identity.IsAuthenticated)
{
context.Authentication.Challenge();
return;
}
await next();
});
【解决方案2】:
我还没有尝试过使用 OWIN 中间件,但您总是可以回退到使用 HTTP 模块来检查您的身份验证 cookie 或不记名令牌是否存在?
【解决方案3】:
我没有对此进行测试,但这是我首先要尝试的,所以我希望它能让你走上正轨。