详细解析在安卓端访问arcgis enterprise加密服务1- 总

0
分享 2020-02-07
-------------------------------------------  写在前面  ---------------------------------------------
目的:

在移动端开发的时候,出于安全原因,开发人员往往会拿到加密的服务地址,此时需要开发人员理解并实现如何在安卓端加载加密服务。

其实具体的讲解和代码示例官网上都有,但是如果你是只做安卓开发或者arcgis enterprise管理员,整体的理解和实现访问加密服务的流程稍微有点困难。我整理这个系列的文章就是希望从整个工作流程的角度出发,讲解安卓安访问加密服务的业务逻辑;讲解为了实现加密服务,在服务器端和安卓端我们分别需要做哪些工作。

这个系列的文章总结了现在平台上的加密方法,并详细展开讲解常用的三种移动端访问加密服务场景和技术细节。
这个系列一共分三篇,以“总-分-分”的模式解释。

在本篇文章中你将获得:
  1. 梳理平台加密方法,以及开发中访问加密服务的整体逻辑。

 
-------------------------------------  正文分割线   --------------------------------------
使用runtime sdk for android 开发应用时,如果要实现在安卓端访问enterprise加密服务,完整的工作流程需要从两个方面考虑:
  1. 安卓端设置什么样的用户登录体验;
  2. 服务器端(arcgis enterprise)采用什么样的加密机制。

 
 
一般情况下两者要搭配使用。
 
因为一般预期的使用流程是,用户在弹出界面输入用户名和密码,将验证请求传回给enterprise进行验证,验证通过,用户即可以在移动端看到加密服务。

默认情况 oauth 2.0和token-based两种方法服务器端是默认支持的,可由开发人员和服务器管理人员共同决定使用哪种。

首先,我们看下安卓端支持的两种用户登录体验:
  1. user login and oauth;
  2. app login;


其次,我们来看下arcgis enterprise支持的四种加密方法:
  1. OAuth 2.0
  2. Token-based
  3. publich key infrastrure
  4. http/ windows authentication

 
举三个场景例子,具体说明常用的user login和oauth /token-based的使用:

 1. 如果你的环境里有整套arcgis enterprise,想要在移动端实现用户登录窗口,用户登录后才能看见加密服务,那么推荐使用 user login 和oauth两个结合使用。实现步骤可以直接参考《详细解析在安卓端访问arcgis enterprise加密服务2-场景1》

 2. 如果你只使用arcgis server,且需要用户在移动端登录才能看见加密服务,那么可以在程序中实现token-based访问加密服务,和登录界面结合使用。实现步骤可以直接参考《详细解析在安卓端访问arcgis enterprise加密服务2-场景2》
 
前两个场景类似,都要借助 AuthenticationManager和 AuthenticationChallengeHandler  类来实现弹出登陆窗口并进行用户登陆验证。
 
3. 如果你还在测试阶段,不需要用户登录,程序运行后直接即可以访问加密服务,那么直接使用token - based 方法访问加密服务即可。实现步骤可以直接参考张工整理的方法《ArcGIS Runtime SDK for Android端如何加载基于Token认证的安全服务》。


参考连接:
1. 《ArcGIS Runtime SDK for Android端如何加载基于Token认证的安全服务》http://zhihu.esrichina.com.cn/question/12519
2.<authentication in ArcGIS>
https://developers.arcgis.com/ ... tion/

1 个评论

如果只有arcgis server,且只在代码中实现用户名和密码,可以用以下这几句关键代码:
UserCredential credential = new UserCredential("siteadmin","Super123");
ArcGISMap map = new ArcGISMap();
ArcGISMapImageLayer mapImageLayerLayer = new ArcGISMapImageLayer("http://192.168.1.109:6080/arcgis/rest/services/SampleWorldCities/MapServer");
mapImageLayerLayer.setCredential(credential);

测试版本:runtime sdk for android 100.7, arcgis server 10.7.1

要回复文章请先登录注册