最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 基于token的ArcGIS Server地图服务安全访问策略

    正文概述 掘金(ironwill)   2021-02-06   974

    基于token的ArcGIS Server地图服务安全访问策略

    一、前言

    二、基于用户权限的 ArcGIS 10.2 for Server Rest服务安全性管理

    ArcGIS Server 安全性确定了管理 GIS 服务器、发布到 GIS 服务器以及使用服务的用户。

    1. 创建用户

    用户是指访问 ArcGIS Server 资源的任何人员或者软件代理商。

    基于token的ArcGIS Server地图服务安全访问策略

    2. 设置地图服务的访问权限

    地图服务的安全设置为私有,仅面向用户开放访问权限。

    基于token的ArcGIS Server地图服务安全访问策略 基于token的ArcGIS Server地图服务安全访问策略

    3. 地图服务访问测试

    打开设置好的地图服务地址进行访问:https://<host>:<port>/<site>/MapServer,此时,就需要输入用户的账号和密码才能进行访问,这样就达到目的了。

    基于token的ArcGIS Server地图服务安全访问策略

    三、基于token的地图服务地址访问认证处理

    1. 获取地图服务地址访问的token

    这里可以使用ArcGIS REST API提供的接口来获取token:

    接口的详细信息可以参考:developers.arcgis.com/rest/servic…。

    (1) 客户端获取token

    浏览器上打开http://<host>:<port>/<site>/tokens/generateToken,输入已经配置好的参数值,即可获取地图服务地址访问的token

    基于token的ArcGIS Server地图服务安全访问策略

    (2) 前端获取token的代码

    /**
     * @description:获取地图服务访问的token
     * @params: url{String} 请求token的地址, 格式如:http://<host>:<port>/<site>/tokens/generateToken
     */
    function getArcgisToken(url) {
    	var params = {
            username: userName, // userName: 用户名
            password: password, // password: 用户密码
            client: 'requestip', // 客户端标识类型
            referrer: '', // 参照方式
            ip: '',
            expiration: 60 * 24 * 10, // 单位:分钟,可以不设置,不设置时默认最大
            f: 'json'
        };
    	$.ajax({
            type: "get",
            url: url,
            data: params,
            dataType: "json",
            success: function (data) {
                if (data.success) {
                    var arcgisToken = data.data.Token; // 地图服务地址访问的令牌
                    ...
                }
            },
            error: function (error) {
                console.log(error);
             }
        });
    }
    

    (3) 后端获取token的代码

    public class ArcgisServerToken {
        @Value("${arcgis.server.url}")
        private String url; // 请求token的地址
        @Value("${arcgis.server.username}")
        private String username; // 用户名
        @Value("${arcgis.server.password}")
        private String password; // 用户密码
        @Value("${arcgis.server.client}")
        private String client; // 客户端标识类型
        @RequestMapping
        public AjaxResult getToken() throws IOException {
            HttpRequester request = new HttpRequester();
            Map param = new HashMap();
            param.put("username", username); 
            param.put("password", password); 
            param.put("client", client); 
            param.put("referer", "");
            param.put("ip", "");
            param.put("f", "json");
    		// param.put("expiration", 60*24*10); // 单位:分钟,可以不设置,不设置时默认最大
            HttpRespons respons = (HttpRespons) request.sendPost(url, param);
            String json = respons.getContent();
            JSONObject jsonObject = JSONObject.fromObject(json);
            String token = jsonObject.getString("Token");
            return new AjaxResult(token);
        }
    }
    

    2. 基于token的地图服务地址的安全访问

    通过上述的方式,无论拼接的是后端还是前端返回的token,均已实现对地图服务地址的安全访问策略。

    基于token的ArcGIS Server地图服务安全访问策略

    四、总结

    • 遇到这样的问题,首先查找是否有相关的工作场景的技术方案及实现思路;有技术方案时,通过分析评估看需要怎么样的实现以及可能遇到的问题。

    • 本文的技术实现路线概括为:

      1. 地图服务管理器(ArcGIS Manager)创建拥有访问权限的用户;
      2. 配置对应地图服务的访问权限
      3. 可以通过客户端前端后台获取地图服务访问的token;
      4. 浏览器访问拼接token后的地图服务
    • 做事要趁早,多尝试。早前看到这个问题,查找资料大都是通过代理解决,所以就想着以后可以通过后台搭建代理框架。其实就应该多尝试,毕竟实践是检验真理的唯一标准

    五、参考文章

    博主 技术小胖子 的文章:ArcGIS 10.1 for Server Rest服务安全性管理:基于用户和角色权限

    博主 羊子雄起 的文章:ArcGIS for JavaScript获取token

    六、最后

    好了,本文的思路分享就写到这里了。

    2021年了,过去一年疫情,属实不易。

    新的一年,祝大家 “牛” 转乾坤; 新的一年,如果有什么新的工作发现,我也会坚持分享(佛系创作哈哈哈哈~)。

    今年的第一篇文章,欢迎❤️点赞+收藏+转发❤️,谢谢大家?

    如果工作中你也遇到这样的问题,赶快动手试试吧!

    如果有什么疑问或建议,欢迎留言交流。若文中有不正之处,欢迎大家留言指正,不吝赐教


    起源地下载网 » 基于token的ArcGIS Server地图服务安全访问策略

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元