[ ArcGIS for Server 10.1 系列 ] - 动态获取权限Token

 

       ArcGIS Server 对服务提供了完善的安全控制,例如:对同一个Map服务,不同的用户具有不同的权限,这些让实际业务中部门之间、区域之间的权责控制变的很简单。

       ArcGIS Server 对安全控制主要基于的方式有:token方式 和 http认证,其标准名称: token-based authentication or HTTP (including Windows) authentication。

      什么叫token方式?

      相信都见过类似于这样uri请求信息:http://****/arcgis/rest/services/wangsh/online/MapServer/export?token=kDeM8yqEdwFCSKkcy8AxRZQ_tWBdMzIgmfdY9bs8WsQTnlw-lkUfo7NDusVqSf9R,或者用httpwatch/fiddler跟踪过ags操作的http请求,有些http请求的body、header或者cache中,有agstoken、token、ags_admin_token的属性,属性内容为一串没有规则的长字母串,就说明这个服务是授权模式为ArcGIS Tokens的。

       什么叫http认证?

      相信大家都部署过tomcat 服务器,在查看web应用或者服务时,弹出对话框,需要输入tomcat的用户名和密码,而这种方式是基于http认证模式。验证信息包含在http请求的header传递到后台,tomcat根据提供的信息确定是否授权。

     

    

      对上述经过token授权的map服务。开发的web应用程序,如何使用这服务的地图资源呢? 已经获得了使用权限的用户名和密码,如何给这个地图资源授权?  再者,对于实际业务系统登录以后,如何看到该用户权限的地图资源?

 

      这些都需要获得token,然后用这个token初始化地图。

      token初始化地图的方式,以初始化动态图层为例:     

1                  //  layerUri地图服务的路径
2                  layerUri = layerUri + "?token=" + _token; 
3                  var basemap =  new esri.layers.ArcGISDynamicMapServiceLayer(layerUri);
4                 map.addLayer(basemap);

 

      接下来是如何获取token?

      要求:在初始化地图之前,就需要事先获得token。

     

 

      如上图所示,在ArcGIS for Server 10.1中提供了Admin Api,可以根据授权的用户名和密码动态获取到token,获取token的方式有:IP和Referer两种,

      1、IP方式获取token。需要提供浏览GIS页面的客户端ip,比如你浏览http://www.gisall.com/updoogis/map.htm这个GIS页面那这个IP为你机器的IP,而不是承载这个GIS 页面的web server机器的IP。

      2、Referer方式获取token。需要你提供GIS页面所在的项目工程路径,如:http://www.gisall.com/updoogis/

  

      在实际应用中,GIS Servers 和 应用的Web Server 一般不会部署在一台机器上,或者说不会在同一个域内(跨域的概念:域名或者端口,任何一个不同就是跨域,也包括localhost和域名,IP和域名也都是属于跨域) 。

      所以,直接从客户端操作 ags admin Rest API 的generateToken,属于跨机器,涉及到跨域问题。

   

 

 

      我们给出来的方法,做proxy代理来解决跨域问题,(这个代理程序可以是asp.net的.ashx/.aspx,或者java的.jsp,乃至.php都可以)。

      这里环境:前端=javascript,后台=asp.net 为例,通过<script>标签访问代理,获取到token:

      例如:

       <script type="text/javascript" src="爱图--UpdooGIS 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/upDOoGIS/archive/2011/10/25/2224197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值