【2012Esri中国用户大会讲座】ArcGIS 10.1 for Server 安全机制(2)使用Token

1 关于Token

在本系列第一篇博客中已经介绍了用户、角色、权限,在访问这些经过权限设置的服务时,会有用户认证和权限验证两个主要的步骤:

用户认证:判断用户输入的用户名是否存在,密码是否正确;

权限验证:判断该用户是否对请求的资源具有访问权限。

认证的方式有两种:基于ArcGIS Token的认证和Web服务器认证,本文将介绍最常用的第一种认证方式。

简单说,Token就是一串包含了用户信息的加密字符串,用于在网络上安全传输用户信息。

2 申请Token

使用Token前首先需要申请Token,可以通过http://myserver:6080/arcgis/admin/generateToken或http://myserver:6080/arcgis/tokens申请。申请页面如下图所示:

需要填写的内容如下:

1)Username:用户名,例如我在上一篇博客里创建的chengdu;

2)Password:用户密码;

3)Client:使用token的客户端,提供三种类型:HTTP Referer、IP、IP Requested,区别如下:

lHTTP Referer:Web应用的URL,申请的token可由该应用的页面使用;

lIP:申请的token只能供指定IP的机器使用;

lIP Requested:只能由申请token的机器使用该token;

4)HTTP referer:如果Client选择了HTTP referer,这里就需要输入应用地址;

5)IP:如果Client选择了IP,这里就需要输入IP地址;

6)Expiration:过期时间,单位为分钟。超过这里设置的时间,token将失效。

设置好后,点击Generate按钮,得到生成的token字符串,如下图

3使用Token

将上一步骤生成的token复制到代码中,如下:
    ArcGISDynamicMapServiceLayer dynLayer = new ArcGISDynamicMapServiceLayer();
    dynLayer.Url = "http://esri-huangd/arcgis/rest/services/sw/sw_provinces/MapServer";
    dynLayer.Token = "wE0oaYBQiQkXWArrP6Pw3Y3dNw_WEP3rDEsMJTd9C-3StWDwtqrKYaRQc75FWbdc7ZasJpfS3klSdU38qYXVxw..";
    dynLayer.InitializationFailed += new EventHandler<EventArgs>(Layer_InitializationFailed);

    map.Layers.Add(dynLayer);

访问效果如下图:

如果将为token赋值的代码注释掉,再访问,得到如下提示:

如果随意篡改token字符串,再访问,得到如下提示:

如果以其他未授权的用户(beijing)申请token,然后再访问,得到如下提示:

以上就是通过token访问ArcGIS服务资源的案例,通过这种方式,可以确保程序在授权的情况下才能访问GIS服务资源,从而保护服务资源的安全。

在实际应用中,需要更新共享密钥(Shared Key,一个16位的随机字符串,用于生成加密的token),因此token也有更新的必要,另外token过期之后,也需要重新申请更新。如果将token硬编码在程序代码中,则需要在token更新之后更新代码并重新编译程序,故建议在程序中动态申请token,以保证程序中使用最新的token。
<!-- Baidu Button BEGIN -->
更多
<!-- Baidu Button END --> <!--192.168.100.33--> <!-- Baidu Button BEGIN --><script type="text/javascript" id="bdshare_js" data="type=tools&amp;uid=1536434"></script><script type="text/javascript" id="bdshell_js"></script><script type="text/javascript"> document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000) </script><!-- Baidu Button END -->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值