ArcGIS 10.1 for Server 安全机制(2)使用Token

0
分享 2012-12-25

1 关于Token
在本系列第一篇博客中已经介绍了用户、角色、权限,在访问这些经过权限设置的服务时,会有用户认证和权限验证两个主要的步骤:
用户认证:判断用户输入的用户名是否存在,密码是否正确;
权限验证:判断该用户是否对请求的资源具有访问权限。
认证的方式有两种:基于ArcGIS Token的认证和Web服务器认证,本文将介绍最常用的第一种认证方式。 简单说,Token就是一串包含了用户信息的加密字符串,用于在网络上安全传输用户信息。
2 申请Token 使用Token前首先需要申请Token,可以通过http://myserver:6080/arcgis/admin/generateTokenhttp://myserver:6080/arcgis/tokens申请。申请页面如下图所示:

需要填写的内容如下:
1) Username:用户名,例如我在上一篇博客里创建的chengdu;
2) Password:用户密码;
3) Client:使用token的客户端,提供三种类型:HTTP Referer、IP、IP Requested,区别如下:
l HTTP Referer:Web应用的URL,申请的token可由该应用的页面使用;
l IP:申请的token只能供指定IP的机器使用;
l IP 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 ... 3B%3B
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。



      文章来源:http://blog.csdn.net/esrichinacd/article/details/7972903

      0 个评论

      要回复文章请先登录注册