SuperMap iPortal 提供了注册服务代理功能,方便您对注册到 iPortal 门户中的多源服务的权限进行统一的控制;提供了代理服务访问统计功能,支持记录代理服务的访问次数,按服务访问次数排序等;此外还支持代理服务以 HTTPS 协议启用
##使用场景
如果您的门户不启用注册服务代理,会存在以下这种状况:
用户 A 注册了一个服务,并分享给用户 B,此时用户 B 知道了该服务地址。当用户 A 修改了该注册服务的共享设置后,用户 B 登录 iPortal 门户,在服务列表中看不到该条服务信息了,但之前已经知道该服务地址的事实无法改变,用户 B 仍然可以访问该服务,服务的访问权限难以控制。
管理员启用注册服务代理功能后,会隐藏原始的服务地址,只有服务的注册者和管理员可以看到原始的服务地址,其他有权限访问该服务的用户只能看到代理后的服务地址,真正在门户级别实现了对注册服务的访问控制。
##注册服务代理设置
作为 iPortal 门户的管理员,可以通过以下三个步骤进行注册服务的代理设置:
1.管理员通过 %SuperMap iPortal_HOME%/webapps/iportal/WEB-INF 目录下的 iportal.xml 文件中的 子节点元素,设置是否启用服务代理。详情请参见:iPortal 配置文件说明。
具体示例如下所示:
<IportalConfig> ... <serviceProxy> <enable>false</enable> <port>8095</port> <httpConnPoolInfo> <maxTotal>100</maxTotal> <defaultMaxPerRoute>10</defaultMaxPerRoute> </httpConnPoolInfo> <!-- “代理访问统计”功能设置,默认不开启 --><enableAccessStatistics>false</enableAccessStatistics> </serviceProxy>
</IportalConfig>
-
列表内容
-
enable:设置是否启用服务代理,默认值:false,不启用服务代理,如果您希望启用服务代理,可以设置为: true。
-
port:设置代理服务地址的端口号,默认值:8095。您也可以自定义设置该端口号,只要保证您设置的端口号没有被占用就可以。
-
httpConnPoolInfo:代理服务的连接池设置项,用于设置代理服务内部的 HttpClient 连接池。调整该节点下的各个设置项,从而提升代理服务的并发性能。
-
maxTotal:设置整个连接池最大连接数。默认值是:100。您可以根据门户最大并发访问用户数来设置。
-
defaultMaxPerRoute:对于一个路由地址,设置最多存在几个连接。默认值是:10。例如:您可以根据门户中单个服务的最大并发访问用户数来设置。
-
enableAccessStatistics:设置是否开启代理服务访问统计功能,默认值:false,不开启。
如果 iPortal 运行在双网卡或多网卡的网络环境中,希望通过不同 ip 访问 iPortal 时,注册服务代理地址会动态的显示 ip 地址,则需在以上配置的基础上,在serviceProxy节点下增加proxyServerRootUrl节点,具体配置如下:
<serviceProxy> <enable>true</enable> <port>8095</port> <proxyServerRootUrl>http://{ProxyHost}[:port]</proxyServerRootUrl> <httpConnPoolInfo> <maxTotal>100</maxTotal> <defaultMaxPerRoute>10</defaultMaxPerRoute> </httpConnPoolInfo> <!-- “代理访问统计”功能设置,默认不开启 --><enableAccessStatistics>false</enableAccessStatistics> </serviceProxy>
其中,{ProxyHost} 是占位符,会动态显示 ip 地址,[:port] 变量表示端口,填写代理后的服务监听端口即可,例如:<proxyServerRootUrl>http://{ProxyHost}:8095</proxyServerRootUrl>
2.在 iportal.xml 文件中配置启用代理服务后,您还需要在 %SuperMap iPortal_HOME% 目录下新建一个空文件夹,例如:取名为“webapp” ,然后将 %SuperMap iPortal_HOME%\webapps 目录下的 iportal 文件夹剪切到刚刚新建的 “webapp" 空文件夹中。下面需要将 iportal 这个应用的 “Context path” 的值设置为空,代理服务功能才能生效。设置完成后, iPortal 门户首页地址变更为: http://:。具体设置如下:
配置 server.xml 文件(位于 %SuperMap iPortal_HOME%\conf 目录下),在 <Host>
节点下增加<Context>
节点,设置 path 属性如下,保存并重启 iPortal 服务。
<Host ...>
<Context path="" docBase="../webapp/iportal"/>
</Host>
<Context>
:将 “…/webapp/iportal” 这个 iportal 应用的 Context path 值映射为空值,其中”webapp“是新建的文件夹的名称。
除以上配置外,还需将 %SuperMap iPortal_HOME%\conf\Catalina\localhost 目录下的所有 iportal#*.xml 文件重命名,去掉文件名中的“iportal#”。此外,还需修改 %SuperMap iPortal_HOME%\bin 目录下的两个 passwordreset.bat/passwordreset.sh 文件,将文件中的“webapps”目录名修改为上面第2步中新建的“webapp”目录名,这两个文件主要用来处理用户忘记系统初始化时的管理员账户密码问题。
页面 Logo 配置,将 %SuperMap iPortal_HOME%\webapps\ROOT\favicon.ico 文件拷贝至 %SuperMap iPortal_HOME%\webapp\iportal 目录下即可,当然,您也可以定制门户的 Logo,只需将 favicon.ico 文件替换成同名的定制文件即可。
注意:
支持注册的服务类型中,SuperMap REST 服务、OGC 服务(WMS、WMTS、WFS、WCS、WPS)、ArcGIS REST 服务均支持服务代理,而“其他服务”类型不支持服务代理。
停用服务代理后,需要重启 iPortal 服务,设置才会生效。
启用服务代理后,在浏览器窗口输入 iPortal 门户首页地址:http://<server>:<port>,
如果自动跳转到 http://<server>:<port>/iportal
,建议清除浏览器缓存后再试
##代理服务访问统计配置
iPortal 启用注册服务代理功能后,还支持对代理服务进行访问统计,记录代理服务的访问次数。管理员通过 iportal.xml (【SuperMap iPortal 安装目录】\webapps\iportal\WEB-INF目录下)配置文件中的 <enableAccessStatistics>
子节点元素,设置是否开启代理服务访问统计功能
<IportalConfig> ... <serviceProxy> <enable>true</enable> ... <!-- “代理访问统计”功能设置,默认不开启 --><enableAccessStatistics>false</enableAccessStatistics> </serviceProxy>
</IportalConfig>
<enableAccessStatistics>
:设置是否开启代理服务访问统计功能,默认值:false,不开启
##代理服务以 HTTPS 协议启用配置
SuperMap iPortal 启用服务代理功能后,默认使用的是 http 协议启用代理服务,也就是说,如果您注册的是 https 服务,那么该服务经 iPortal 代理后,将以 http 协议启用。门户管理员可以通过如下设置使用 https 协议启用代理服务:
将 iportal.xml 配置文件中<serviceProxy>
元素中的如下注释部分打开:
<serviceProxy> ... <!-- 设置使用什么协议启动代理服务,默认使用http协议。若设置https协议,需设置httpsSetting--><!-- <scheme>http</scheme> <httpsSetting> <keyStorePath>D:\key.keystore</keyStorePath> <keyStorePassword>123456</keyStorePassword> </httpsSetting> -->... </serviceProxy>
打开注释后,做如下修改:
<serviceProxy> ... <!-- 设置使用什么协议启动代理服务,默认使用http协议。若设置https协议,需设置httpsSetting--><scheme>https</scheme> <httpsSetting> <keyStorePath>D:\key.keystore</keyStorePath> <keyStorePassword>123456</keyStorePassword> </httpsSetting> ... </serviceProxy>
<scheme>
:设置使用什么协议启用代理服务,默认值:http,即:使用 http 协议。如果您希望使用 https 协议启用代理服务,那么此处需设置为:https。
<keyStorePath>
:指定证书的存放位置,可以任意指定。该证书是用于 iPortal 以 HTTPS 协议启用代理服务,关于如何生成服务器证书,请参见:生成服务器证书(公匙)。
<keyStorePassword>
:设置证书的密码,即证书 key.keystore 的密码。