一、前言
二、基于用户权限的 ArcGIS 10.2 for Server Rest服务安全性管理
ArcGIS Server 安全性
确定了管理 GIS 服务器、发布到 GIS 服务器以及使用服务的用户。
1. 创建用户
用户
是指访问 ArcGIS Server 资源的任何人员或者软件代理商。
2. 设置地图服务的访问权限
将地图服务的安全设置
为私有,仅面向用户
开放访问权限。
3. 地图服务访问测试
打开设置好的地图服务地址进行访问:https://<host>:<port>/<site>/MapServer
,此时,就需要输入用户的账号和密码
才能进行访问,这样就达到目的了。
三、基于token的地图服务地址访问认证处理
1. 获取地图服务地址访问的token
这里可以使用ArcGIS REST API
提供的接口来获取token:
接口的详细信息
可以参考:developers.arcgis.com/rest/servic…。
(1) 客户端
获取token
在浏览器
上打开http://<host>:<port>/<site>/tokens/generateToken
,输入已经配置好的参数值,即可获取地图服务地址访问的token
。
(2) 前端
获取token的代码
/**
* @description:获取地图服务访问的token
* @params: url{String} 请求token的地址, 格式如:http://<host>:<port>/<site>/tokens/generateToken
*/
function getArcgisToken(url) {
var params = {
username: userName, // userName: 用户名
password: password, // password: 用户密码
client: 'requestip', // 客户端标识类型
referrer: '', // 参照方式
ip: '',
expiration: 60 * 24 * 10, // 单位:分钟,可以不设置,不设置时默认最大
f: 'json'
};
$.ajax({
type: "get",
url: url,
data: params,
dataType: "json",
success: function (data) {
if (data.success) {
var arcgisToken = data.data.Token; // 地图服务地址访问的令牌
...
}
},
error: function (error) {
console.log(error);
}
});
}
(3) 后端
获取token的代码
public class ArcgisServerToken {
@Value("${arcgis.server.url}")
private String url; // 请求token的地址
@Value("${arcgis.server.username}")
private String username; // 用户名
@Value("${arcgis.server.password}")
private String password; // 用户密码
@Value("${arcgis.server.client}")
private String client; // 客户端标识类型
@RequestMapping
public AjaxResult getToken() throws IOException {
HttpRequester request = new HttpRequester();
Map param = new HashMap();
param.put("username", username);
param.put("password", password);
param.put("client", client);
param.put("referer", "");
param.put("ip", "");
param.put("f", "json");
// param.put("expiration", 60*24*10); // 单位:分钟,可以不设置,不设置时默认最大
HttpRespons respons = (HttpRespons) request.sendPost(url, param);
String json = respons.getContent();
JSONObject jsonObject = JSONObject.fromObject(json);
String token = jsonObject.getString("Token");
return new AjaxResult(token);
}
}
2. 基于token的地图服务地址的安全访问
通过上述的方式,无论拼接的是后端
还是前端
返回的token,均已实现对地图服务地址的安全访问策略。
四、总结
-
遇到这样的问题,首先查找是否有相关的工作场景的技术方案及实现思路;有技术方案时,通过分析评估看需要怎么样的实现以及可能遇到的问题。
-
本文的技术实现路线概括为:
- 在
地图服务管理器(ArcGIS Manager)
创建拥有访问权限的用户; 配置
对应地图服务的访问权限
;- 可以通过
客户端
、前端
、后台
获取地图服务访问的token; - 在
浏览器
访问拼接token后的地图服务
。
- 在
-
做事要趁早,多尝试。早前看到这个问题,查找资料大都是通过代理解决,所以就想着以后可以通过后台搭建代理框架。其实就应该多尝试,毕竟
实践是检验真理的唯一标准
。
五、参考文章
博主 技术小胖子 的文章:ArcGIS 10.1 for Server Rest服务安全性管理:基于用户和角色权限
博主 羊子雄起 的文章:ArcGIS for JavaScript获取token
六、最后
好了,本文的思路分享就写到这里了。
2021年了,过去一年疫情,属实不易。
新的一年,祝大家 “牛” 转乾坤; 新的一年,如果有什么新的工作发现,我也会坚持分享(佛系创作哈哈哈哈~)。
今年的第一篇文章,欢迎❤️点赞
+收藏
+转发
❤️,谢谢大家?
如果工作中你也遇到这样的问题,赶快动手试试吧!
如果有什么疑问或建议,欢迎留言交流。若文中有不正之处
,欢迎大家留言指正,不吝赐教
。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!