Java REST服务以访问另一个第三方服务

Java REST服务以访问另一个第三方服务,java,angular,model-view-controller,Java,Angular,Model View Controller,我正在设计一个用Angular制作的UI应用程序。 我还开发了基于Java的后端 我的应用程序访问第三方REST服务以获取一些天气数据。 这项服务是付费的,我有一把钥匙可以使用 我正在尝试将这些数据集成到我的Angular应用程序中。 我一直在阅读,不建议在客户端存储或管理密钥(还没有看到一种足够安全的方法来避免任何人从客户端获取该密钥)。 所以我的问题是,是否必须使用后端服务来实现对天气数据的访问? 有更好的方法吗?比如在我的应用程序上创建一个仅作为代理的REST服务、添加密钥、访问其他第三方

我正在设计一个用Angular制作的UI应用程序。 我还开发了基于Java的后端

我的应用程序访问第三方REST服务以获取一些天气数据。 这项服务是付费的,我有一把钥匙可以使用

我正在尝试将这些数据集成到我的Angular应用程序中。 我一直在阅读,不建议在客户端存储或管理密钥(还没有看到一种足够安全的方法来避免任何人从客户端获取该密钥)。 所以我的问题是,是否必须使用后端服务来实现对天气数据的访问? 有更好的方法吗?比如在我的应用程序上创建一个仅作为代理的REST服务、添加密钥、访问其他第三方REST服务并返回相同的原始数据


直接在UI上实现这一点对我来说非常理想,但我关心的是如何处理安全问题。

好吧,我要强调的是,您不应该将密钥放在客户端,特别是注意“服务是付费的”。这样做会让你的密钥暴露在互联网上,爬虫程序肯定会找到它,如果其他人开始使用它,很可能会造成伤害,特别是当配额是你付费的时候


关于代理,您希望在后端为页面设置数据,而不是使用客户端调用来获取数据。但是,如果这是一项涉及实时更新或AJAX的功能,那么明智的做法是首先通过CORS进行保护

然而,CORS还不够,因为您的代理仍然可以被非web浏览器或行为不正确的浏览器的客户端访问。为了解决这个问题,您需要发行类似于随处可见的(XSRF/CSRF)令牌的令牌

按钮行,您的问题的关键要素是:

  • 不要在UI层中放置键
  • 如果此服务已打开,则生成代理服务将不会保护它们
  • 不知道你的钥匙不会阻止任何人使用它们,如果你的使用也不安全的话;e、 例如,访问您的服务以获取数据,或者使用您的部分页面组成web页面—由您的服务器提供服务

是的,您只想创建一个有效的代理。您可以在后端设置代理,每个人都会赢。好的,我将强调您不应该将密钥放在客户端,特别是注意“服务是付费的”。这样做会将您的密钥暴露到internet上,爬虫程序肯定会找到它,如果其他人开始使用它,很可能会造成伤害,特别是当配额是您付费的时候。关于代理,您希望在后端设置页面的数据,而不是使用客户端的调用来获取数据。但是,如果这是一项涉及实时更新或AJAX的功能,那么明智的做法是首先通过CORS进行保护。CORS还不够,因为您的代理仍然可以被非web浏览器或行为不正确的浏览器的客户端访问。为了解决这个问题,您需要发行类似于随处可见的(XSRF/CSRF)令牌的令牌。