Portal for ArcGIS 10.2版本开始,可在Portal的组织管理中设置Federated Servers即联合服务器,从而通过Portal for ArcGIS来托管与之联合的ArcGIS for Server站点的安全性,使得两者的单点登录,以及后续使联合服务器变成Hosting Server(托管服务器),并在其上发布托管服务成为可能。关于两者的介绍和具体操作步骤请参考相关文档。这里说一下设置联合服务器时一个常见问题的解决办法。
在Portal的组织管理页面中,添加联合服务器时,有可能会出现如下错误:
具体请求是Portal的代理页面通过https方式访问要关联的ArcGIS for Server站点token服务时服务器端报500 internal error。
直接通过https方式访问上述token服务地址:
发现此证书不受信任,有安全警告;而如果通过https方式访问Portal,
证书是已经导入机器的受信任根证书颁发机构的,所以证书可信,没有安全警告。你可能还发现,上面两个证书的颁发者,颁发对象均不一样,说明这是两个完全不同的证书。这是因为第一个没有受信的证书是ArcGIS for Server自带的tomcat中6443端口使用的证书,此证书是在安装完ArcGIS for Server后,第一次创建站点时就会自动生成的,存放在config-store中该机器文件夹下的key stroe中;而后面的证书是我在IIS中自己创建的域证书,是IIS中的443端口使用的证书。如果你在联合服务器时遇到同样错误,很可能会发现两个证书的颁发者和颁发对象是同名的(大小写不一样),这是通常情况,我这里不同名是因为装完ArcGIS for Server之后,安装Portal之前修改了机器名。修改机器名为full qualified domain name步骤是必须的,应该在装ArcGIS for Server之前完成。
经过与同事讨论及实验得知,最初那个500错误是因为ArcGIS for Server站点6443端口安全证书不受信任引起的。所以解决办法有以下几种:
- 同Portal的443端口(其实Portal是7443端口,通过443是Web Adaptor的端口)所使用证书的处理办法一样,将6443端口的证书也导入机器的受信区域。如果导入成功,浏览器访问ArcGIS for Server的6443端口应该不再有警告信息,如此在Portal中联合服务器时就不会报500错误了;
- 既然IIS中自己创建的证书已经设为可信了,那么可以指定ArcGIS for Server的6443端口使用同样的证书,则通过https访问6443端口时自然也不会报警告信息。大致步骤是,从iis中导出证书,在ArcGIS for Server中通过admin rest api将证书导入到机器中,然后编辑机器资源,指定该机器使用该证书。具体可参考相关的admin api帮助。
此处我遇到的错误是通过第二个办法解决的。补充:如果你和我一样,6443使用的证书的颁发对象与当前机器名不同,建议使用admin rest api,重新生成一个颁发对象与当前机器名相同的自签名证书,之后再将其导入机器的受信区域。