开发授权

发送反馈


SuperMap iPortal 提供了一种开发授权,简称:Key。它是在线开发中使用的应用密钥,是服务的口令标识,是一种为了保护用户在 iPortal 中注册和托管服务的安全机制。SuperMap iPortal 启用服务代理后,用户在 iPortal 中注册的服务或基于自己的数据发布成的托管服务,其他用户只有通过授权给该服务的 Key 才能调用该服务,因此,开发授权(Key)功能是 iPortal 启动服务代理后使用的。Key 由24位随机字母+数字组成。

添加密钥(Key)

iPortal 的普通用户和管理员都可以添加密钥。iPortal 启用服务代理之后,在门户首页,点击“登录”按钮,登录成功后,依次点击“我的内容”->“开发授权”,选择“添加密钥”,进入添加密钥页面,输入相关参数并选择密钥允许访问的服务,点击“确定”按钮即可添加一个密钥:

点击“确定”按钮后,在开发授权页面即添加一个密钥,“应用密钥(Key)”列显示的是密钥参数,也是用户使用的 Key。一个用户可以添加多个密钥,一个服务也可以对应(或绑定)多个密钥。

使用密钥(Key)

生成的密钥(Key),主要用于在线应用开发过程中,访问受保护的服务时,无需提供用户名和密码,只需在其服务地址后加上密钥(Key)即可。例如:服务访问地址如下:

http://192.168.120.40:8095/iserver/services/map-HunanPopulationDensity/rest.rjson?key=v6ywlc7MJiAY6CQ0Ej4RXWD0

其中,?前的部分是需要调用的服务地址,其后的部分(key=......)是访问需要的密钥请求参数,以此 url 发送请求即可进行访问。

示例:开发者如何使用 SuperMap iClient 调用 iPortal 中受保护的服务,构建一个简单的地图应用呢?

SuperMap iClient 8C(2017) for JavaScript 在 js 类库中对密钥(key)的使用进行了封装,即无需在每个服务访问请求后面都加“?key=...”,而是通过 SuperMap.Credential.CREDENTIAL 类进行安全验证。

下面以 SuperMap iClient 8C(2017) for JavaScript 为例,实现在网页中使用 iPortal 中受保护的地图服务:

一步:下载并解压库文件

下载 SuperMap iClient 8C(2017) for JavaScript 解压包文件,解压安装包文件于本地磁盘。

第二步:创建 HTML 显示页面

在本地磁盘任意位置新建文件夹并自定义该文件夹,本示例命名为“MyFirst”;在 "MyFirst”文件夹下用文本编辑工具(如 NotePad++)新建一个“demo.html”的 html 页面,注意将该 html 页面保存为 UTF-8 编码格式,并添加入以下代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .mapcontainer{
            height: 600px;
        }
    </style>
</head>
<body onLoad = "init()">
<div id = "map" class = "mapcontainer"></div>
    <script type="text/javascript">
        var map, layer,
        url = "http://192.168.120.40:8095/iserver/services/map-world/rest/maps/World";
        var value = "v6ywlc7MJiAY6CQ0Ej4RXWD0";
        var name = "key";
        function init(){
            //设置API Key
            SuperMap.Credential.CREDENTIAL = new SuperMap.Credential(value, name);
            //初始化地图
            map = new SuperMap.Map("map",{controls:[
                new SuperMap.Control.Navigation() ,
                new SuperMap.Control.Zoom()]});
            map.addControl(new SuperMap.Control.MousePosition());
            //初始化图层
            layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {transparent: true, cacheEnabled: true}, {maxResolution:"auto"});
            //监听图层信息加载完成事件
            layer.events.on({"layerInitialized":addLayer});
        }
        //异步加载图层
        function addLayer(){
            map.addLayer(layer);
            //显示地图范围
            map.setCenter(new SuperMap.LonLat(0 , 0 ), 0);
        }
   </script>
   <script src='libs/SuperMap.Include.js'></script>
</body>
</html>

其中:

第三步:引用资源文件

将第一步得到的 libs 和 theme 文件夹拷贝到“MyFirst”文件夹下,也可以放在其他位置,这时需要在第二步的代码中修改引用脚本的相对路径。

第四步:使用浏览器运行查看

启动 SuperMap iPortal 并运行 demo.html 文件,浏览地图数据。

管理密钥(Key)

您可以管理自己添加的密钥(Key),在 iPortal 门户首页,点击“登录”按钮,登录成功后,依次点击“我的内容”->“开发授权”,在开发授权页面会显示当前用户添加的所有密钥列表。