ArcGIS Server 代理可以支持访问跨域资源、超过2058个字符的请求、使用基于令牌的身份验证访问安全的资源、Oauth 2.0 app logins等,有.net、java、php版本,我的需求是ArcGIS Server 添加登录验证,当前以java 版本为例,主要分为四步:
第一步:arcgis server manager 中新增角色和用户,具体步骤为:
登录 arcgis server manager网站---》安全性---》用户/角色,如下图:
第二步:为地图服务配置访问权限,可以配置某一个地图服务的,也可以配置某个目录下的所有地图服务的,也可以配置根目录下所有地图服务的,具体如下图:
第三步:修改代理配置如下:
在 serverUrl 节点中设置需要进行登录验证的url,以及对应的用户名和密码
第四步:前端Arcgis API for JavaScript(我用的是3.x系列)工程中设置代理,具体可以参考APIesri/config中的io对象,代码如下:
esriConfig.defaults.io.proxyUrl= "http://localhost:8088/proxy/proxy.jsp"
esriConfig.defaults.io.alwaysUseProxy= true;
如果不通过arcgis api 访问地图服务,直接通过ajax访问地图服务的的话,可以直接访问代理地址,将地图服务地址作为参数,具体如下:
var url = "http://domain:port/proxy/proxy.jsp?http://domain:port/arcgis/rest/services/xxx/mapServer/legend?f=pjson"
$.ajax({ url: url, success:function(e){
console.log(e)
}});
以上就是实现 arcgis server安全登录验证的步骤,如果需要使用自己的用户名密码,可以先进行业务系统的登录验证,验证通过再做arcgis
server 的登录验证(需要修改jsp 源码)