C# 仅允许对外部系统访问回调url
为了限制对控制器中某个操作的访问,例如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.NETMVC5C# 仅允许对外部系统访问回调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
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范围…创建一个授权属性,您可以用它来装饰您的操作。这将帮助您:。