【问题标题】:Limiting access to webservices so only my applicaiton can use it限制对 Web 服务的访问,因此只有我的应用程序可以使用它
【发布时间】:2012-08-16 15:43:08
【问题描述】:

我有一个系统,它会每隔 X 秒更新一些关于用户通知的 UI 细节(就像 StackOverflow 的通知、gmail 收件箱等)。 我计划有一个网络服务来检查新的通知并让它每 X 秒调用一次。事实是:我不想把它公开给所有人,我想让它只有我的系统可以访问,所以它是唯一能够使用它的人。

有没有办法做到这一点?不需要使用 WebService,如果您有其他方法我想听听。

我的系统是使用 ASP.NET 4.0 和 Microsoft 的 MVC 框架构建的。我可以调用一个操作来执行此操作吗?

我的问题类似这样:How do I secure ASP.NET web service to only allow relative path calling?

但据我理解的答案,他提出可以将webservice变成系统内部的普通类方法,外部无法访问。这对我不起作用,因为我想从客户端访问它。

谢谢, 奥斯卡

ps:更改基础架构配置(例如:将其托管在内部服务器中)将很难做到...

编辑:我想用这个网络服务实现的是更新通知号码。这应该在不刷新页面的情况下完成,因此我考虑与服务器验证是否有任何通知,如果有,则更新 UI。

Edit2:我可以在我的系统中将这个 webmethod 转换成一个普通的方法,那没问题。然后问题将变为如何将客户端连接到此方法?也许使用 javascript 调用一个操作,然后在此操作中调用该方法?

【问题讨论】:

    标签: asp.net asp.net-mvc-3 web-services


    【解决方案1】:

    将此 WebService 部署在不同的网站上,然后将 configure this site 部署为只能从 IP 访问:127.0.0.1。还结帐this blog post - 你可以安装IP Security 然后:

    最后,要创建限制,打开 IIS 管理器并选择 您要限制的网站。打开 IP 地址和域 限制模块,然后在操作面板中(右侧) 选择编辑功能设置...。要仅允许本地浏览,您 默认情况下应该拒绝。从下拉列表中选择拒绝,然后点击确定。 然后添加您的例外 - 您要允许的 IP 或范围 进入。为此,请从操作中选择添加允许条目... 面板,然后添加您需要的所有例外。

    现在,只有在同一 Web 服务器上运行的应用程序才能访问此 Web 服务。

    【讨论】:

    • 那会很好,但是我正在使用像 AppHarbor 这样的托管服务,它没有给我这种灵活性....还有其他想法吗?如前所述,将此功能实现为 Web 服务并不是强制性的……
    • 哦,那就不要将它实现为 Web 服务。使其成为只有您的 MVC 应用程序才能访问的类库的一部分。
    • 可以做到,但我如何将客户端“连接”到库调用?我将创建一个 MVC 操作,该操作将由客户端使用 javascript 调用并调用类库中的方法?
    • 取决于您要达到的目标。您不一定需要使用 javascript 来访问操作。您可以使用简单的 html <form> 甚至是锚点。这一切都取决于你需要什么。但是,是的,控制器动作可以充当桥梁。
    • 抱歉,问题缺少信息。请看编辑。如果用户在没有刷新页面的情况下收到通知(就像 facebook 一样),我想更新“通知计数”。为此,我想调用 web 服务(或类似服务)并在收到新通知时更新 UI 元素
    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2016-07-18
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多