ArcGIS Silverlight 设置token

背景

arcgis for server采用多种安全认证方式。常用的就是就是采用token机制。所以对服务设置了安全,则前端需要提供相对应的token凭证。通常来说设置token有以下两种情形:

  • 一是客户端无需输入凭证的形式。token嵌入在程序中,客户端体验很好,无需输入用户凭证,但这样需要设置长时效的token。

  • 二是通过对话框需要输入用户名和密码。这样需要向服务器端提交用户名和密码,获取服务器的端token,再去请求地图资源。

生成token的方式

arcgis for server的admin中提供了generateToken 操作。如下图1所示:

图1

其中client有三种形式:

  • ip : 客户端机器的ip地址

  • requestIp:发出请求的ip地址

  • referer:应用程序的base url

但是这三种认证方式,只有ip和requestip的形式可以在web 应用程序中使用。但是由于在Silverlight 4以前的版本,没有办法对Header设置referer,所以referer这种形式不可以在Silverlight api中使用,即使3.2的api中使用的是Silverlight 5 。但是还是没有办法使用referer的形式 。所以在Silverlight的应用程序中只能通过ip的形式生成token。详细情况参考如下:https://developers.arcgis.com/silverlight/guide/secure-services.htm

设置token

根据官方help中的推荐方式,其建议在服务器端放置一个proxy文件 将token信息存放于proxy文件中。其给出了相关的proxy模板的下载地址:https://developers.arcgis.com/silverlight/guide/other/SLProxyPage.zip

  1. 将下载的文件解压到web 服务器,如iis中

  2. 打开proxy.json的文件,修改其中的配置文件

<serverItem url="http://192.168.100.82:6080/arcgis/rest/services/MyMapService/MapServer"
                matchAll="true" 
                token="VQTzrWZ6RhESBvab-RORbrA6iTQ5OtLBGnsyLScRdG6Q6saIKUTuvbas_L8LXR-6"/>

其中 url为Silverlight应用程序调用的服务,该地址可以使用根url,如http://192.168.100.82:6080/arcgis/rest/services/ ,当其中有多个服务设置了安全。*NB:必须使用ip地址。一开始我由于在本机测试,使用localhost 一直报invalid token错误

  1. 调用服务对proxyUrl 指定proxy.ashx 在服务器中的url 如http://192.168.100.82/proxy.ashx

参考代码:


 ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer pDynamicMaplayer = new ArcGISDynamicMapServiceLayer();
pDynamicMaplayer.Url = "http://192.168.100.82:6080/arcgis/rest/services/MyMapService/MapServer";
pDynamicMaplayer.ProxyURL = "http://192.168.100.82/proxy.ashx";
//pDynamicMaplayer.Token = "VQTzrWZ6RhESBvab-RORbrA6iTQ5OtLBGnsyLScRdG6Q6saIKUTuvbas_L8LXR-6";
 myMap.Layers.Add(pDynamicMaplayer);

另一种情境下的token的设置

上面的情形是一种为了方便客户端操作,客户端在无需输入用户名和密码的情况下就具有了加密服务的访问权限。但是在实际的工作中通常是需要客户端提供想对应的用户名和密码,根据凭证与服务器端进行token验证

使用admin api中的getToken操作获取服务器端的token值并添加给arcgis 相关的layer


string tokenurl =
                string.Format("https://myserver/arcgis/tokens?request=getToken&username={0}&password={1}&timeout={2}",
                username, password, timeout);

            WebClient tokenService = new WebClient();
            tokenService.DownloadStringCompleted += (sender, args) =>
            {
                layer.Token = args.Result;
                string originalUrl = layer.Url;
                if (MyMap.Layers.Contains(layer))
                {
                    layer.Url = null;
                    layer.Url = originalUrl;
                }
                else
                    MyMap.Layers.Add(layer);
            };

            tokenService.DownloadStringAsync(new Uri(tokenurl));
        }

NB:上面的url中使用的是https的协议,这是因为防止在向服务器提交用户名和密码的时候,使用明文密码。使用https协议,这也是arcgis for server支持的另一种安全方式。通过在admin中将http only 的验证方式改为http and htts 或者https only即可

通过identitymanager

identitymanager 是arcgis Silverlight api中提供的类,从api reference来看,其是管理用户凭证。

主要是两类:

  • 基于token的arcgis server的资源和操作

  • arcgis.com 的加密的资源和

官方的sample中也提供了相对应的sample 参考如下: https://developers.arcgis.com/silverlight/sample-code/start.htm#IdentityManagerServices

转载于:https://www.cnblogs.com/myyouthlife/p/3880843.html

基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值