ArcGIS Server 基于Token安全验证
写在前面:只使用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服务地址为正确的可访问服务地址。
ArcGIS Server 基于Token安全验证的更多相关文章
- vue & nodejs jwt 的基于token身份验证
现在比较流行的验证方式,是带着token的登录验证 原理 1. 登陆时,客户端发送用户名密码 2. 服务端验证用户名密码是否正确,校验通过就会生成一个有时效的token串,发送给客户端 3. 客户端储 ...
- ArcGIS JS 之通过代理配置ArcGIS Server服务 token
ArcGIS JS 代理 1.ArcGIS Server Manager中配置访问服务的用户名.密码.角色等,并配置地图服务的具体角色名称 2.在ArcGIS JS中配置使用代理,下述代码将esri的 ...
- 基于token的验证
认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...
- ASP.NET Core Web API + Angular 仿B站(三)后台配置 JWT 的基于 token 的验证
前言: 本系列文章主要为对所学 Angular 框架的一次微小的实践,对 b站页面作简单的模仿. 本系列文章主要参考资料: 微软文档: https://docs.microsoft.com/zh-cn ...
- 基于 Token 的身份验证:JSON Web Token(附:Node.js 项目)
最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...
- ArcGis server连接oracle
ArcGIG server连接Oracle 目录--gis服务器--添加arcgis server 下一步: 身份验证为在arcgis server manager 中的管理员登录密码和账户 对于服务 ...
- 基于token的会话保持机制
session简介 做过Web开发的程序员应该对Session都比较熟悉,Session是一块保存在服务器端的内存空间,一般用于保存用户的会话信息. 用户通过用户名和密码登陆成功之后,服务器端程序会在 ...
- Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证
1.首先了解一下Token 1.token也称作令牌,由uid+time+sign[+固定参数]组成: uid: 用户唯一身份标识 time: 当前时间的时间戳 sign: 签名, 使用 hash/e ...
- WebApi基于Token和签名的验证
最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...
随机推荐
- Android <Android应用开发实战> 资源类型<一>
1.字符串资源>>1.普通字符串>>2.字符串数组 <resources> <string-array name="planets_array&qu ...
- 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)
[POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...
- [Leetcode] Construct binary tree from inorder and postorder travesal 利用中序和后续遍历构造二叉树
Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume th ...
- React获取组件实例
1. 直接new Component() 组件本身也是class,可以new,这样的组件实例意义不大 componentInstance = new Component(); 2. ReactDOM. ...
- 【计数原理】【UVA11538】 Chess Queen
传送门 Description 给你一个n*m的棋盘,在棋盘上放置一黑一白两个皇后,求两个皇后能够互相攻击的方案个数 Input 多组数据,每组数据包括: 一行,为n和m 输入结束标志为n=m=0. ...
- 【博弈论】【P1288】取数游戏II
传送门 Description 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点 ...
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- mpvue开发小记
1.组件嵌套组件时,子组件作用域bug 组件A内的slot包含子组件B的话,无法正常使用变量(这种情况下,B组件的template错误地使用了A的作用域). 我的解决方案:减少一层组件提炼,即这种情况 ...
- 网络编程:I/O模型
I/O模型 Unix下可用的5种I/O模型有: 阻塞式I/O 非阻塞式I/O I/O复用(select和poll,epoll) 信号驱动式I/O 异步I/O(POSIX的aio_系列函数) 一个输入操 ...
- 南阳ACM 题目811:变态最大值 Java版
变态最大值 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解决了 ...