【问题标题】: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】:

        我没有对此进行测试,但这是我首先要尝试的,所以我希望它能让你走上正轨。

        • 配置您的应用程序,以便 OWIN 通过 StaticFilesMiddleware 提供所有静态文件。 This article talks about how to do that

        • 1234563 403或其他)。在配置 OWIN 身份验证中间件后,您需要注册此 RequireAuthenticationMiddleware,以便身份验证详细信息位于 OWIN 上下文中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-14
          • 1970-01-01
          • 2017-07-12
          • 1970-01-01
          • 2014-11-24
          • 1970-01-01
          • 2014-09-16
          • 2016-04-20
          相关资源
          最近更新 更多