允许仅对外部系统访问回调URL

时间:2014-12-12 13:38:40

标签: c# asp.net asp.net-mvc callback

为了限制对控制器中某个操作的访问,我遇到了问题(比如说wwww.mysite.com/callback/c1)。我希望只有外部ERP系统才能访问该控制器。 ERP允许我设置一个回调URL,每次在此ERP系统中发生特定事件时,它将发出POST请求。

现在,我不希望其他人能够向此网址发布任何内容。如何保护只能从ERP系统访问的URL?

我一直在考虑在ERP网址中对用户和密码进行硬编码,因此它会将请求发送到www.mysite.com/callback/c1?userName=user&password=pass,这样我可以检查凭证是否有效,如果是,则继续请求,但凭证将在ERP系统中可见。

还有其他方法可以达到这个目的吗?

PD:我正在使用ASP .NET MVC5 PD2:我无法控制ERP系统进行修改,我只能设置回调URL。

1 个答案:

答案 0 :(得分:0)

您需要确定请求来自ERP,因此您应该看看在请求中标识它的soemthing。你应该知道:ClientCertificates,Headers,LogonUserIdentity,ServerVariables,Cookies,UserAgent,UserHostAddress,UserHostName ......如果你发现一些标识你的ERP的元素,那么你就解决了问题。但有人仍然可以窃取身份并重现它。

另一个选项是在IIS中使用防火墙和/或特殊配置。除了通常绑定到端口80之外,您可以将应用程序绑定到非常规端口(例如88),也可以绑定到域名,只有您的ERP计算机才能运行。您是否可以访问ERP OS上的hosts文件?请参阅this info in wikipedia

如果设置了防火墙,则可以设置过滤器,以便对新绑定端口(在示例88中)的请求只能来自ERP计算机。

您还可以检查请求是否属于只有ERP计算机如何解析的域,因为它是在其hosts文件中定义的。

如果您可以使用防火墙,您甚至可以向前迈出一步,在您的界面(NIC)上添加第二个IP,只有ERP知道,这样您才能获得对域头/ IP /端口组合的传入请求可以检查。

如果没有更多的信息很难给你一个更好的建议(这是ERP的操作系统,什么样的应用程序,你可以做出哪些配置......)