Arcgis api for js的图层权限管理和基于代理的权限验证配置

最近对arcgis的地图服务进行权限控制,最先实现的方式是通过arcgis server生成一个带生命周期的token,然后将该token串跟在地图服务url后面,形式mapServiceUrl?token=dsfdf4342fd这种形式,这种形式依然有暴露的风险,最后还是决定通过代理来实现权限的控制。

1:首先要在arcgis站点里设置好角色和用户,用户归属于角色,图层或者目录的访问权限是和角色绑定的,这里为了便于测试我创建了两个目录 folder a,里面有一个服务 map_a,folder b 里面有个服务map_b;创建两个角色role_a包含用户user_a,role_b包含用户user_b,然后给目录a 设计角色访问控制role_a,给目录b设置角色访问控制role_b。

2:搭建代理服务:从github上下载arcgis的代理支持https://github.com/Esri/resource-proxy/releases,本次以Java版本部署到tomcat为例,下载后从解压包里拷贝Java文件夹到tomcat下的webapp里,编辑Java里面的proxy.config文件,将serviceUrl切换成自己的arcgisservices地址,然后启动tomcat,根据Java文件夹里的markdown文档(.md)文件中的方法测试代理是否成功。

3:代理服务搭建成功后通过github上管理代理配置的文档可以看到可以进行的配置(不同版本的代理可能参数不同),配置中有这样三个

把这三个配置添加到proxy.config里面,其中username,password可以填在arcgis站点里创建的用户和密码,tokenServiceUri填写你的arcgis对应的获取token的地址(http://ip:6080/arcgis/tokens/generateToken)此处注意不要填写http://ip:6080/arcgis/tokens,这样代理会报错,填写完成后重启tomcat。

4:在代码中加入esriConfig.defaults.io.proxyUrl = "http://tomcat_ip:port/Java/proxy.jsp";

esriConfig.defaults.io.alwaysUseProxy = true;这样两句代码,然后在代码里面调用图层进行测试。

5:测试结果:1:首先在浏览器中已经无法直接查看到加了角色的arcgis服务地址;2:如果在代理的proxy.config文件中配置的是user_a的账号和密码则只能访问folder a中的服务。访问不了folder b中的服务,同理user b只能访问目录b内的,也访问不了a的,显而易见通过代理配置实现的图层访问控制是成功的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ArcGIS API for JavaScript是一个用于构建地理信息系统应用程序的JavaScript库,它可以让开发人员在Web浏览器中使用地图、图层和空间分析。 Proxy代理ArcGIS API for JavaScript中用于解决跨域请求问题。当应用程序在不同的域上运行时,由于浏览器的同源策略限制,跨域请求可能会受到阻止。为了绕过这个限制,可以配置一个Proxy代理服务器来处理跨域请求。 在使用ArcGIS API for JavaScript中的Proxy代理时,可以选择使用不同的代理服务器。如果你使用的是.NET开发环境,可以配置一个ASP.NET代理服务器。 配置ASP.NET代理服务器需要以下步骤: 1. 创建一个新的ASP.NET项目。 2. 添加一个.asmx文件作为代理服务器的Web服务。 3. 在.asmx文件中编写代理服务器的逻辑,包括处理跨域请求的代码。 4. 在代理服务器代码中,首先判断请求是否来自ArcGIS API for JavaScript,并根据需要进行身份验证。 5. 如果请求符合要求,代理服务器将请求转发到目标服务器,并将其响应返回给浏览器。 例如,当使用ArcGIS API for JavaScript加载地图图层时,浏览器会发出跨域请求。代理服务器可以将这些请求转发到地图图层所在的服务器,并将响应返回给浏览器,绕过了同源策略的限制。 在ArcGIS API for JavaScript中配置代理时,可以指定代理服务器的URL和需要代理的URL模式。这样,所有匹配指定URL模式的请求都将被转发到代理服务器。 总结而言,ArcGIS API for JavaScript中的Proxy代理可以通过配置一个ASP.NET代理服务器来解决跨域请求问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值