0

寻找一种解决方案,在拥有多个子域的同时安全地使用 Here Maps javascript 地图应用程序密钥 ( https://developer.here.com/documentation/maps/3.1.20.0/api_reference/H.service.Platform.html )。

目前我们初始化地图如下:

this.platform = new H.service.Platform({
    apikey: 'XXXX',
    useCIT: true,
    useHTTPS: true
});

Here maps Javascript 服务要求提供 api 密钥进行身份验证,并在 api 密钥正确时生成 GET。

他们的一种安全方法是列入白名单,但是我们允许我们的用户创建像 xxx.example.com 这样的子域,同时访问同一个 webapp。

HereMaps 安全选项之一如下:

  • 使用选项为您的应用凭据创建受信任的域(插入没有协议的值)

此选项似乎不起作用,因为它不允许 * (*.example.com)。我禁用了这个选项以便能够使用这里的地图服务但是我宁愿增加一些安全性而不是直接暴露我们的 APP ID..

我找不到对此处地图 javascript 服务的 oauth2 支持的提及。所以我的问题:

  • 这里的地图是否支持他们的 javascript 地图服务的 oauth2 身份验证?
  • 除了使用 * 将子域列入白名单之外,还有其他选择吗?
  • 有没有一种方法可以将我们的子域代理到我们的主域中。我想到了一个 iframe,但这似乎很麻烦,因为我们与地图交互?
  • 也许是更好的方法?

提前致谢

4

1 回答 1

0

我认为令牌之路是您的最佳选择。我没有亲自使用这项服务,但我发现了这个https://developer.here.com/documentation/identity-access-management/dev_guide/topics/sdk.html#step-2-create-a-signature

我可能是错的,但我明白它是这样的:

  1. 用户从您的后端请求令牌(用于从客户端使用 API)。
  2. 您正在后端创建签名和签名密钥,然后发送创建令牌的请求
  3. 然后您可以将此令牌返回给用户的客户端。

问题:

是什么阻止我在您的站点创建令牌然后在其他地方使用它?

当您将要使用请求的域列入白名单时,如果您不是从服务器执行此操作,而是从客户端执行此操作,那么服务器如何能够说它来自特定域?

对我来说,似乎在转到 HERE 服务之前的所有请求都应该通过您的 API 后端,这将确定请求是否来自提供的“前端”。

于 2020-11-29T12:20:11.363 回答