首页 > 解决方案 > 如何检测用户何时从 Visual Studio 运行或何时是常规运行服务

问题描述

我正在开发一个云系统(使用 Azure 和 .NET 核心),它使用文件共享中的各种文件,云中的服务可以访问这些文件。这可以是任何 json 格式的文件。

我想开发(还没有开始,所以我没有代码可以展示——这是一个设计)一种授权系统,但我遇到了问题。

我将首先描述新的“系统” - 每个 json 文件都会有一个新部分,其中包含允许访问该文件的服务列表,如果请求服务不在该新部分中,则没有读取或写入操作将被允许​​用于该服务。为了知道服务的身份,我将获得Environment.MachineName许多现有服务的名称,这些名称将在授权本身提交到云中的代码之前手动添加到每个文件中。

现在解决我遇到的问题 - 系统的其他开发人员可以从 Visual Studio 本地运行服务并尝试使用文件。在这种情况下,Environment.MachineName是他的本地计算机的名称,它没有任何访问任何文件的权限。您对我如何检测用户何时从他的本地计算机运行服务以及如何在这样的系统中知道他应该被授权访问他想要使用的文件有任何想法吗?

标签: c#visual-studioazureauthorization

解决方案


你描述这个项目的方式,听起来每个服务都会检查它是否有权访问那个特定的文件。我绝对不会那样做。

如果这是一个微服务的东西,你可以使用 API 网关来授权。

如果是别的东西,你可以在你的文件前面做一个服务。某种防火墙/路由器,它授权其他服务并访问文件以查看它们是否被允许,然后对这些文件执行读写操作。中间有个安全的人。

我希望你能以这种方式工作。如果我能猜出您的一项服务的名称,那么我可能能够伪造请求并访问文件。因此,在您授权任何人之前,请使用某种身份验证。这可以通过密钥/密码、某种签名机制、IP 白名单等来完成。最优选地是两个或多个刚刚提到的方法的组合。


推荐阅读