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
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值