Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅允许对外部系统访问回调url_C#_Asp.net_Asp.net Mvc_Callback - Fatal编程技术网

C# 仅允许对外部系统访问回调url

C# 仅允许对外部系统访问回调url,c#,asp.net,asp.net-mvc,callback,C#,Asp.net,Asp.net Mvc,Callback,为了限制对控制器中某个操作的访问,例如ww.mysite.com/callback/c1,我遇到了一些问题。我希望只有外部ERP系统才能访问此控制器。 ERP允许我设置一个回调URL,每次在此ERP系统中发生特定事件时,它都会向该URL发出POST请求 现在,我不希望其他任何人能够发布任何东西到这个URL。如何保护此url仅从ERP系统访问 我一直在考虑在ERP URL中对用户和密码进行硬编码,这样它会将post请求发送到www.mysite.com/callback/c1?userName=u

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

现在,我不希望其他任何人能够发布任何东西到这个URL。如何保护此url仅从ERP系统访问

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

有没有其他方法可以做到这一点

我正在使用ASP.NETMVC5
PD2:我无法控制ERP系统的修改,我只能设置回调URL。

您需要确定请求来自ERP,因此您应该像在请求中标识它的soemthing一样。您应该检查是否有:ClientCertificates、Header、LogonUserIdentity、ServerVariables、Cookies、UserAgent、UserHostAddress、UserHostName。。。如果您找到了一些识别ERP的元素,那么问题就解决了。但仍有人可以窃取身份并复制它

另一个选项是使用防火墙和/或IIS中的特殊配置。除了通常绑定到端口80之外,您还可以将应用程序绑定到一个非常规端口,如88,或者绑定到一个域名,该域名现在只有您的ERP计算机。您有权访问ERP操作系统上的主机文件吗?看

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

您还可以检查请求是否发送到只有ERP机器知道如何解析的域,因为它是在其主机文件中定义的

如果您可以使用防火墙,您甚至可以向前迈进一步,向您的接口NIC添加第二个IP(只有ERP知道),这样您就可以收到对域标头/IP/端口组合的传入请求,并且可以进行检查


如果没有更多信息,很难给您提供更好的建议哪种是ERP的操作系统,哪种应用程序,您可以进行哪些配置…

假设您有IP范围…创建一个授权属性,您可以用它来装饰您的操作。这将帮助您:。