ArcGIS Maps SDK for JavaScript 4.x - 传递安全要素层资源的令牌

问题描述 投票:0回答:1

我正在将 3.x Enterprise ArcGIS Server Javascript 应用程序迁移到 4.x。该应用程序使用由单独进程生成的服务令牌将安全的FeatureLayer图层添加到地图中。

在 3.x 应用程序中,此令牌只是在“token”查询字符串参数中传递,如下所示:

new esri.layers.FeatureLayer("https://blahblah/MapServer/1?token=abc123");

但是,在 4.x(JavaScript SDK)中,这已被弃用,他们似乎希望令牌在“X-Esri-Authentication”承载令牌(HTTP 标头)内传递,如此处文档中所述:

https://enterprise.arcgis.com/en/server/latest/administer/windows/about-arcgis-tokens.htm

我遇到的问题是我没有找到实际添加该标头的方法。所有文档都讨论使用 EsriRequest,这不是我在这里所做的。

我尝试像这样使用 IdentityManager:

IdentityManager.registerToken({
  server: "https://example.com/bar/rest/services",
  token: "<the generated token string here>"
});

...这不会引发任何错误,但也不会执行任何其他操作。可以肯定的是,我使用 Fiddler 捕获了流量并搜索了令牌,但在上述代码片段的任何地方都没有找到令牌。

我发现了一些社区帖子,人们提出了同样的问题,以及 StackOverflow 上的一些较旧的问题(但这些问题已经足够老了,人们只是建议将“令牌”添加到查询字符串中)。文档并没有很好地涵盖这一点,所以有人完成了这个特定的设置吗?

arcgis arcgis-js-api arcgis-server
1个回答
0
投票

事实证明 IdentityManager.registerToken() 方法确实有效,但客户端应用程序使用了几个不同的子域。所以我正在尝试:

server: "https://foo.example.com/arcgis/rest/services"

...但是FeatureLayer位于bar.example.com上,因此服务器参数需要是:

server: "https://bar.example.com/arcgis/rest/services"

由于不匹配,当我添加FeatureLayer时,IdentityManager找不到对该域有效的令牌。

© www.soinside.com 2019 - 2024. All rights reserved.