SuperMap iServer 服务管理器中提供安全模块,通过基于用户身份识别的认证和授权,实现对服务的访问控制。开启服务安全后,服务就受到了保护,只有授权的角色所对应的用户才能访问受保护的服务资源。
此外,SuperMap iServer 提供了一种基于 Token(令牌)的用户身份验证机制,使在访问受保护的服务资源时仅需提供 Token,而不需要提供用户名和密码。用户凭借合法的用户名和密码即可获取 Token,然后可携带 Token 访问相应的已授权的服务。SuperMap iServer 提供的 GIS 服务(详见GIS 服务资源层次结构)、OGC 服务、服务管理(服务管理资源层次结构)和门户(门户资源层次结构)的所有资源,均支持通过 Token 来访问,只需在访问时添加“token”参数即可。需要注意的是,访问受保护的服务中的每一个资源时,都要携带“token”参数。
示例:
http://localhost:8090/iserver/services/map-china400/rest.rjson?token=NZkILm9Tl2FGzwK_nUh9krlHOtO0ds83lDoARA85_rMveuTyK0TyGcYV-5rn3wUYE-MSNPlw6wKnewy8jek_JQ..
http://localhost:8090/iserver/services/map-china400/rest/maps/China/tileImage.png?token=NZkILm9Tl2FGzwK_nUh9krlHOtO0ds83lDoARA85_rMveuTyK0TyGcYV-5rn3wUYE-MSNPlw6wKnewy8jek_JQ..
SuperMap iPortal 的 REST API 提供了注册服务的功能,可以通过 services 资源的 POST 请求来实现。
对于门户中所有受保护的资源,通过 REST 方式访问和使用时需要携带验证信息,比如可以在 HTTP 请求头中携带Cookie 信息,或者可以基于 Token 访问受保护的 REST 服务资源。其中 Cookie 信息可以在登录时获取,而 SuperMap Token 可以通过 token 资源获取。
通过 services 资源注册单个服务,不需要提供用户名和密码,仅需携带令牌 token=9jD451OhUlsDSJkJe9Wb34AkFS5k8I6FMy2UriguJkS2X-qXofeME0gSDTgW6003REFso7YhS3E5TNdzUoQWXg..。
对 services 资源发送 POST 请求:
http://localhost:8090/iportal/web/services.rjson?token=9jD451OhUlsDSJkJe9Wb34AkFS5k8I6FMy2UriguJkS2X-qXofeME0gSDTgW6003REFso7YhS3E5TNdzUoQWXg..
注册一个 SuperMap REST 服务,传入 rjson 请求体如下:
{
"type": "SUPERMAP_REST",
"tags": [
"China"
],
"authorizeSetting": [
{
"entityName": "GUEST",
"entityType": "USER",
"permissionType": "READ"
}
],
"metadata": {
"mdContact": {
"rpIndName": "",
"rpOrgName": "",
"rpPosName": "",
"rpCntInfo": {
"cntAddress": {
"delPoint": "",
"city": "",
"adminArea": "",
"postCode": "",
"country": "",
"eMailAdd": ""
},
"voiceNum": "",
"faxNum": ""
}
},
"dataIdInfo": {
"dataIdent": {
"idCitation": {
"resTitle": "map"
},
"idAbs": ""
}
},
"distInfo": {
"onLineSrc": {
"linkage": "http://192.168.112.217:8090/iserver/services/map-china400/rest"
}
}
}
}
其中:
上述 POST 请求发送后,服务端返回注册的服务如下所示:
{
"newResourceID": "115",
"newResourceLocation": "http://localhost:8090/iportal/web/services/115",
"succeed": true
}
即为申请注册的服务的 ID 和服务地址,此时还需要管理员的审核,审核通过后才能注册到 iPortal 中。关于管理员的服务审核资源可以访问 servicesCheckStatus 资源。
用户可以通过 REST API 以多种表述格式申请 Token,详见 tokens 资源。