iPortal Key机制:灵活保护你的在线服务

发布时间:2020 年 08 月 25 日  文/云产品研发中心 王萌
导读:Resource Key是SuperMap iPortal中提供的一种在线开发中使用的应用密钥,是为了保护用户在iPortal中注册和托管服务安全的一种访问控制方法,支持控制访问来源、有效期、访问服务内容、访问频率等。

  Resource Key的诞生

  在SuperMap iPortal(以下简称“iPortal”)中,出于对用户添加的服务资源在安全性和隐私性方面的考虑,iPortal支持资源发布者进行共享权限设置,以指定其他用户对服务资源的访问权限(私有、公开查看、指定用户/群组查看)。当其他用户在iPortal中检索到具有访问权限的服务资源时,可以向资源发布者申请访问授权,待资源发布者审核通过后,资源申请者可获得服务资源的访问权限。通过这种机制,iPortal帮助资源发布者实现了对服务资源的访问控制,为用户的服务资源提供了安全保障。

  但是,上述服务资源访问的控制机制也存在一定的局限。例如,资源发布者无法控制资源访问的有效期和访问量,资源申请者无法在站外访问获得授权的服务资源,因此并没有完全实现服务资源访问的高效可控。为了解决这些痛点,一种新的服务资源访问的控制机制——Resource Key诞生了。

图1 Resource key的典型业务场景

  Resource Key的定义

  •Resource Key是什么?

  SuperMap iPortal提供了注册服务代理的功能,通过在原始服务地址与代理服务地址间建立映射关系,使得用户只能通过Resource Key授权访问代理服务地址,从而实现门户对注册服务的访问控制。iPortal支持注册的服务类型

  包括SuperMap REST服务、OGC 服务(WMS、WMTS、WFS、WCS、WPS)、ArcGIS REST服务、其他任意类型的Http服务。

  资源密钥Resource Key是SuperMap iPortal中提供的一种在线开发中使用的应用密钥,是为了保护用户在iPortal中注册和托管服务安全的一种访问控制方法,支持控制访问来源、有效期、访问服务内容、访问频率等。

  如果需要使用iPortal中的服务资源进行在线Web开发或其他用途,用户需要先申请资源密钥Resource Key。Resource Key是服务的口令标识,由24位随机字母+数字组成,是一种在线服务的保护机制,Resource Key在iPortal启用服务代理后生效。

  •Resource Key怎样保证服务资源的安全?

  1、控制服务的访问范围

  iPortal用户在添加密钥时,可以控制该密钥允许访问的服务范围,即只能使用Resource Key访问服务拥有者指定的一个或多个服务。

  2、控制服务的访问来源

  iPortal用户在添加密钥时,可以选择服务访问请求的校验方式为“站点访问”或“服务请求”,用于控制允许访问服务的站点地址或访问源IP。

  3、控制服务的访问有效期

  iPortal用户在添加密钥时,可以根据需要设置密钥的有效期,用于控制服务访问的有效时间。

  4、控制服务的访问量

  iPortal用户在添加密钥后,可以根据需要设置密钥的访问量周期配额(支持时/日/月/年),也可以随时查看密钥的剩余访问量,实现服务访问量的弹性控制。

  Resource Key的业务场景

  •典型业务场景一:站外使用者申请密钥

  张三是B市交管局的一名员工,主要负责该局信息化建设。最近张三接到了一个任务,需要开发一个在线应用,实现该市交通数据的可视化展示。这些交通数据相关的服务资源都已整合到交管局的iPortal平台中,于是张三通过企业微信找到了这些服务资源的发布者李四,向他申请密钥以实现在站外调用这些服务资源,李四同意了张三的密钥申请。随后,李四登录了iPortal,在“我的账户”>“我的密钥”处进行密钥(Resource Key)添加,填写“密钥名称”为“应用的名称”,选择“请求校验方式”为“站点访问”,并填写张三项目在线开发中的网站地址作为允许访问的站点地址,根据张三的任务周期设置了密钥的有效期为一个月,并选择张三申请的相关服务,点击“确定”按钮完成了密钥的添加。密钥添加完成后,李四通过企业微信将密钥发送给了张三。

  •典型业务场景二:站外使用者在在线开发中使用密钥

  张三在获得资源密钥(Resource Key)后,在地址栏中输入了“代理服务地址?key=密钥值”,以测试密钥是否有效,结果表明,该密钥可以访问相关服务资源。随后,张三在通过SuperMap iClient平台进行在线开发的过程中,在代码中写入Resource Key和服务的代理地址,调用相关接口,既可访问服务资源(图2),无需用户名和密码,极大地提高了开发效率。

图2 在iClient SDK中使用Resource Key的代码示例

  Resource Key机制的业务流程如图3所示,涉及的角色为服务拥有者和站外使用者,站外使用者查看/检索到服务拥有者在iPortal中拥有的私有服务资源(包括自己注册和他人共享的服务资源)后,向服务拥有者申请密钥,如果服务拥有者同意密钥申请,则在iPortal中为站外使用者申请的相关服务资源添加密钥,并根据需要进行相应的服务访问控制,如控制访问有效期、访问范围、访问来源等,然后将添加好的密钥通过站外渠道发送给站外使用者,最后站外使用者就可以在在线开发过程中使用密钥和代理服务地址调用这些私有的服务资源,高效地完成开发工作了。

图3 Resource Key机制业务流程图

  下面将对资源密钥(Resource Key)相关的业务流程进行详细介绍:

  •申请密钥

  当服务资源的站外使用者在iPortal中检索到想要访问的私有服务资源时,可以通过站外渠道向相关服务资源的拥有者申 请密钥,待服务拥有者同意后,即可在iPortal中为相关私有服务资源添加密钥了。

  •添加密钥

  在添加密钥之前,iPortal需启动服务代理,当前产品包已默认开启服务代理,用户也可以根据业务需要独立部署服务代理。启动代理服务后,服务拥有者均可为相关服务资源添加密钥。用户登录iPortal后,从“我的账户”> “我的密钥”处,选择“添加密钥”,进入添加密钥页面。在添加密钥时,用户需要填写的信息如下:

  1、密钥名称

  添加密钥的名称,可以与在线开发的应用名称一致,方便查找与管理。

  2、请求校验方式

  控制允许服务访问的来源,Resource Key支持以站点访问和服务请求两种方式校验服务访问的来源。

  (1)站点访问

  如果需要允许某个站点访问iPortal中受保护的服务,则在添加密钥时的“请求校验方式”中选择“站点访问”,填写Referer,即允许访问服务的站点地址,例如:http://www. supermapol.com,如图4所示,则该密钥只能在该站点中使用,不能在其他站点地址中使用。

图4 密钥的请求校验方式为站点访问

  (2)服务请求

  如果需要允许某些客户端IP访问iPortal中受保护的服务,则在添加密钥时的“请求校验方式”中选择“服务请求”,并填写允许访问服务的客户端IP,支持设置多个网段(逗号分隔),例如:192.168.1.1/24,如图5所示:则该密钥只能在此IP网段内使用,不能在其他IP地址中使用。

图5 以服务请求的方式添加密钥

  (3)有效期

  服务拥有者可以根据业务需要设置密钥的有效期,超出有 效期后,密钥将失效,以此控制私有服务资源的访问时间。

  (4)服务

  选择密钥允许访问的服务,以此控制服务资源的访问范围。

  •管理密钥

  iPor tal支持服 务拥有者管 理已添加的密钥,在“我的账户”>“我的密钥”页面会显示当前用户添加的所有密钥,在密钥列表中,可以 查看密钥的名称、密钥值、请求校验方式、密钥允许访问的服务数量、有效期等,还可以在当前页面编辑、删除已添加的密钥。同时,用户还可以在“我的密钥”页面查看密钥的剩余访问次数,并可根据密钥的实际使用情况,修改密钥的访问量配额(密钥默认配额10000次/日),通过访问量配额实现对服务访问量的弹性控制。

  •使用密钥

  生成的密钥(Key),主要用于在线应用开发过程中,密钥使用者访问受保护的服务时,无需提供用户名和密码,只需在其服务地址后加上密钥(Key)即可。例如:服务访问地址如下:http://192.168.120.40:8195/iserver/services/map-HunanPopulationDensity/rest.rjson?key=v6ywlc7MJiAY6CQ0Ej4RXWD0

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

版权所有© 1997-2019 中国科学院地理信息产业发展中心 《超图通讯》编辑部