一,用途

您的应用可能需要访问仅与授权用户共享的项目。例如,您的组织可能会托管只有经过验证的用户才能访问的私有数据图层或要素服务。您可能还需要利用需要指定用户登录的高级 ArcGIS Online 服务,例如地理编码或路由服务。

二,涉及相关API

1,DefaultAuthenticationChallengeHandler: 用于处理 ArcGIS 支持的所有安全类型(包括 OAuth)。

  • 如果质询是基于 HTTP 或令牌的身份验证错误,则会出现一个对话框提示用户输入其凭据。
  • 如果质询是基于 OAuth 的身份验证错误,则会启动 OAuth 登录页面。默认情况下,登录页面将使用 Chrome 自定义选项卡启动。setChromeCustomTabsEnabled(boolean))或者,可以通过设置为 false 在默认浏览器中打开 OAuth 页面 。
    要使 OAuth 在您的应用程序中正常工作,还有两个额外的步骤:
    1. 使用 向 AuthenticationManager 添加 OAuth 配置AuthenticationManager.addOAuthConfiguration(OAuthConfiguration)),
    2. 使用 DefaultOAuthIntentReceiver
  • 如果质询是自签名证书错误,对话框将提示用户指示他们是否要信任证书,以及是否要记住答案。
  • 如果质询是缺少客户端证书,则对话框将提示用户从设备中选择合适的证书文件。

2,AuthenticationManager:在连接到安全服务时管理用户身份验证
3,AuthenticationChallengeHandler:用于处理 AuthenticationChallenge 问题的接口。必须返回一个 AuthenticationChallengeResponse,其中包含一个操作(请参阅 参考资料AuthenticationChallengeResponse.Action)和可能用来执行该操作的参数
4.OAuthConfiguration:

三,使用流程

  1. 将AuthenticationManager’s设置AuthenticationChallengeHandler为DefaultAuthenticationChallengeHandler.
  2. 创建OAuthConfiguration指定门户 URL、客户端 ID 和重定向 URL。
  3. 将 OAuth 配置添加到身份验证管理器。
  4. 在mainifest中注册com.esri.arcgisruntime.security.DefaultOAuthIntentReceiver Activity
  5. 加载包含需要身份验证的高级内容的地图,以自动调用默认身份验证处理程序。