在Google认证后提供静态文件服务

5
我想使用 Gatsby 制作一个静态生成的网站。这很好,但是我想要进行身份验证和授权,因为这是一个内部网站 - 只有我的公司的人才能访问。我想了想,没有一些服务器组件,安全地认证用户似乎是不可能的 (?), 没有某种后端。我想我可以使用 ASP.NET Core 来提供静态文件,并在这些静态文件之前使用 Google (for Work) 身份验证和授权。 StaticFileHandler 从设计上不支持授权, 因为它只负责提供公开访问的静态文件。我通过在我的根操作上使用 Authorize 属性,并具有发出 Challenge 的登录操作使 Google 认证工作。进一步阅读处理静态文件的文档说:
静态文件模块不提供授权检查。通过它提供的所有文件,包括在wwwroot下的文件都是公开可用的。为了基于授权提供文件服务:
- 将它们存储在wwwroot之外和任何静态文件中间件可以访问的目录之外 - 通过控制器操作提供它们,返回一个应用了授权的FileResult
现在我有一个Index操作在我的HomeController上,它看起来像这样:
[Authorize]
public IActionResult Index()
{
    // TODO: Return static files based on incoming requested path.
    return View();
}

我对这个解决方案不是很满意。我应该使用中间件来使整个事情工作,而不是使用MVC吗?这是正确的方法吗?有更好的方法吗?

2个回答

0
在工作中,我们有一个通过 VPN 服务的 Gatsby 网站。它运行良好,不需要任何身份验证系统和后端。您只需要禁止不在 VPN 内部的用户访问服务器即可。
您可以使用 https://github.com/gatsbyjs/gatsby-docker 来使用 nginx 服务 gatsby。

0

Gatsby会生成一份静态内容的文件夹,这些内容不涉及授权的概念。

我建议你需要在不同层面处理认证。例如,你可以在Web服务器层添加一个简单的基本授权头要求。在nginx或apache中,这将是微不足道的。

将认证集成到你的Gatsby项目中,要么就是违背了静态站点的目的,要么就意味着你的内容是作为JSON文件公开访问的,但是除非满足了某种授权要求(不安全),否则你的React应用程序将拒绝加载它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接