写在前面:只使用token并不能起到安全验证的作用,ArcGIS Server文件夹的权限是开放的,我们不需要登录Server平台即可访问服务,所以我们应该将Token验证和文件夹的安全性结合起来使用,将文件夹的权限设为私有,这样必须先要登录才能访问服务。

当我们的服务发布到外网,但是我们又不希望其他人员访问我们的服务。这时我们就需要对服务的请求进行验证,类似于使用用户名和密码进行登录。相当于先用进行验证,验证成功再响应服务请求。实质上我们在请求服务的过程就进行了两步操作。在ArcGIS API for JavaScript中如何实现这两步操作?我们可以使用代理的方式,即在客户端和GIS服务器之间再添加一个服务,这个服务首先接收我们客户端的请求,然后根据配置文件里面的用户名和密码第一个和GIS服务器握手,并获取token,将获取到的token返回到代理服务,代理服务再将我们客户端请求的url和token进行合并,向GIS服务器请求服务,GIS服务器解析token,并相应请求给代理服务,代理服务返回结果给客户端:

在Web系统中使用Token验证(.NET版本):

1.首先,为ArcGIS Server添加用户和角色:

2.为服务所在文件夹设置权限,进入到服务--》管理服务--》选中站点--》鼠标放在菜单--》编辑文件夹安全性--》私有--》赋角色:

3.在https://github.com/Esri/resource-proxy/releases 下载代理页面,我们只需要proxy.ashx和proxy.config文件,也可选择本文末尾作者提供的实例(建议使用);

4.进入Web工程,将proxy.ashx和proxy.config添加到项目目录,最好和JS文件在同一目录;

5.修改proxy.config:

<serverUrl url ="http://192.168.1.6:6080/arcgis/rest/services"
matchAll="true"
dynamicToken="true"
host="192.168.1.6:6080"
userName="yangtao"
password=""></serverUrl>

修改url中ip为GIS服务器ip;host也为GIS服务器ip;userName为在Server里面添加的用户;password为用户密码。

6.在require中设置代理:

esriConfig.defaults.io.proxyUrl = "proxy.ashx";
esriConfig.defaults.io.alwaysUseProxy = true;

alwaysUseProxy为true表示始终使用代理,在测试过程,若底图使用ersi地图,出现错误,用天地图则跳过代理,实现只是对服务使用代理。

目录结构:

index.html、proxy.confog和proxy.ashx统计目录,也可以不同级。

proxy.config配置实例:

<serverUrl url ="http://192.168.1.6:6080/arcgis/rest/services"
matchAll="true"
dynamicToken="true"
host="192.168.1.6:6080"
userName="yangtao"
password="262728"
></serverUrl>

客户端调用实例:

require(["esri/map", "esri/config", "esri/layers/ArcGISDynamicMapServiceLayer", "extras/TDTRoadLayer", "dojo/domReady!"],
function (Map, esriConfig, ArcGISDynamicMapServiceLayer, TDTRoadLayer) {
esriConfig.defaults.io.proxyUrl = "proxy.ashx";
esriConfig.defaults.io.alwaysUseProxy = true;
var map = new Map("map", {
center: [104, 30],
zoom: 8
});
var layer = new TDTRoadLayer();
map.addLayer(layer);
var dynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("http://192.168.1.6:6080/arcgis/rest/services//test/china/MapServer");
map.addLayer(dynamicMapServiceLayer);
});

注:

1.对于下载的附件,需要修改proxy,config里面的参数(url、host、userName、password四个参数);

2.修改index.html中ArcGISDynamicMapServiceLayer服务地址为正确的可访问服务地址。

Proxy

ArcGIS Server 基于Token安全验证的更多相关文章

  1. vue & nodejs jwt 的基于token身份验证

    现在比较流行的验证方式,是带着token的登录验证 原理 1. 登陆时,客户端发送用户名密码 2. 服务端验证用户名密码是否正确,校验通过就会生成一个有时效的token串,发送给客户端 3. 客户端储 ...

  2. ArcGIS JS 之通过代理配置ArcGIS Server服务 token

    ArcGIS JS 代理 1.ArcGIS Server Manager中配置访问服务的用户名.密码.角色等,并配置地图服务的具体角色名称 2.在ArcGIS JS中配置使用代理,下述代码将esri的 ...

  3. 基于token的验证

    认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...

  4. ASP.NET Core Web API + Angular 仿B站(三)后台配置 JWT 的基于 token 的验证

    前言: 本系列文章主要为对所学 Angular 框架的一次微小的实践,对 b站页面作简单的模仿. 本系列文章主要参考资料: 微软文档: https://docs.microsoft.com/zh-cn ...

  5. 基于 Token 的身份验证:JSON Web Token(附:Node.js 项目)

    最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...

  6. ArcGis server连接oracle

    ArcGIG server连接Oracle 目录--gis服务器--添加arcgis server 下一步: 身份验证为在arcgis server manager 中的管理员登录密码和账户 对于服务 ...

  7. 基于token的会话保持机制

    session简介 做过Web开发的程序员应该对Session都比较熟悉,Session是一块保存在服务器端的内存空间,一般用于保存用户的会话信息. 用户通过用户名和密码登陆成功之后,服务器端程序会在 ...

  8. Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证

    1.首先了解一下Token 1.token也称作令牌,由uid+time+sign[+固定参数]组成: uid: 用户唯一身份标识 time: 当前时间的时间戳 sign: 签名, 使用 hash/e ...

  9. WebApi基于Token和签名的验证

    最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...

随机推荐

  1. SPOJ - PHRASES

    题意: 给n个字符串,求出最长的子串.使得子串在每个字符串中不重叠地至少出现2次.输出子串长度. 题解: 用后缀数组求出height数组,之后二分答案.check时对height数组进行分组,并维护每 ...

  2. 洛谷3258:[USACO2012 MAR]Flowerpot 花盆——题解

    https://www.luogu.org/problemnew/show/P2698#sub 老板需要你帮忙浇花.给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位 ...

  3. Leetcode中单链表题总结

    以下是个人对所做过的LeetCode题中有关链表类型题的总结,博主小白啊,若有错误的地方,请留言指出,谢谢. 一.有关反转链表 反转链表是在单链表题中占很大的比例,有时候,会以各种形式出现在题中,是比 ...

  4. [Leetcode] sqrt 开根号

    Implementint sqrt(int x). Compute and return the square root of x. 题意:求根号下x 的值 思路:使用二分搜索.先定义x平方根的取值区 ...

  5. Java第二次实验报告——Java面向对象程序设计

    北京电子科技学院(BESTI) 实    验    报    告 课程名称:java程序设计实验      班级:1352         姓名:洪韶武      学号:20135219 成绩:   ...

  6. ywy_c_asm题

    未知出处 题意: 定义一个无穷长的数列,满足以下性质:$1.X_{2n}=-{X_{n}}$ $2.X_{2n}=(-1)^{(n+1)}*X_{n}$ $3.X_{2n-1}=(-1)^{(n+1) ...

  7. Linux 第30天: (08月5日) 练习和作业

    变量脚本 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 server_ip=`if ...

  8. 如何修改即时聊天websocket的端口号

    需要修改2个地方 1.修改\src\main\java\com\woodstudio\framework\modules\chat\StartFilter.java里面的端口号   2.修改\src\ ...

  9. ACM1753大明A+B

    ACM1753_link 这道题利用了大数相加,但是需要将小数和整数部分分开,独立相加,然后组合成一个数: 数据的可能性: 1.两个整数相加,没有小数点 2.一个整数一个小数相加 3.两个小数相加 要 ...

  10. mysql concat update中拼接字符串

    mysql> select id,avatar from tf_user; +----+--------------+ | id | avatar | +----+--------------+ ...