• geoscene/identity

IdentityManager

AMD: require(["geoscene/identity/IdentityManager"], (geosceneId) => { /* code goes here */ });
ESM: import geosceneId from "@geoscene/core/identity/IdentityManager";
类: geoscene/identity/IdentityManager
起始版本:GeoScene Maps SDK for JavaScript 4.0

此对象提供用于管理以下资源的用户凭据的框架和帮助程序方法:

  • 受保护的 geosceneonline.cnGeoScene Enterprise 门户资源 (例如,web 地图)。

  • 使用基于令牌的身份验证保护的 GeoScene Server 资源。注意,仅支持 GeoScene Server 版本 10 SP1 及更高版本。如果您的应用程序访问不同域的服务,则视为跨域请求,您需要设置代理或使用 CORS (如果浏览器支持)。如果支持 CORS,则 Identity Manager 会通过 https 向令牌服务发出请求。

阻止通过 http 的身份验证请求,因为可以在服务器日志中查看通过 GET 发送的敏感数据。为防止出现这种情况,Identity Manager 要求您使用 https 协议的 POST 来确保您的凭据是安全的。查看使用代理CORS 帮助主题以获取更多详细信息。

IdentityManager 模块与 API 中的其他模块略有不同。它不返回类构造函数,而是返回已由此模块创建的单例实例。

另请参阅

属性概述

名称 类型 描述
Widget

对话框微件用于在应用程序尝试访问安全资源时,询问用户的凭据。

更多详情
IdentityManager
Number

令牌的建议生存期,以分钟为单位。

更多详情
IdentityManager

属性详细信息

dialog Widget

对话框微件用于在应用程序尝试访问安全资源时,询问用户的凭据。此属性在 dialog-create 事件触发后可用。

tokenValidity Number

令牌的建议生存期,以分钟为单位。

默认值:60

方法概述

名称 返回值类值 描述
Promise<Object>

如果用户已登录以访问给定的资源,并且在使用给定的应用程序 id 时被允许这样做,则返回 credential

更多详情
IdentityManager
Promise<Credential>

如果用户已登录以访问给定的资源,则返回 Credential

更多详情
IdentityManager

销毁所有凭据。

更多详情
IdentityManager

禁止使用 window.postMessage 来处理由 enablePostMessageAuth 启用的身份验证请求。

更多详情
IdentityManager
Boolean

在实例上触发事件。

更多详情
IdentityManager

启用 IdentityManager,以便为运行在子 iframe 中的应用程序中的给定资源提供身份验证请求服务。

更多详情
IdentityManager
Credential

返回由指定 url 标识的资源的 Credential

更多详情
IdentityManager
OAuthInfo

返回传入的 Portal 服务器 URL 的 OAuthInfo 配置。

更多详情
IdentityManager
ServerInfo

返回有关托管指定 URL 的服务器的信息。

更多详情
IdentityManager
Promise<Object>

返回一个包含令牌及其到期时间的对象。

更多详情
IdentityManager
Promise<Credential>

返回 Credential 对象,该对象可用于访问由输入 URL 标识的安全资源。

更多详情
IdentityManager
Boolean

指示实例上是否存在与提供的事件名称相匹配的事件监听器。

更多详情
IdentityManager

在应用程序初始化期间,使用先前从 toJSON() 方法获得的 JSON 调用此方法,该方法用于重新填充 IdentityManager 的状态。

更多详情
IdentityManager
Boolean

指示 IdentityManager 是否正忙于接受用户输入。

更多详情
IdentityManager
Object

在实例上注册事件处理程序。

更多详情
IdentityManager

注册 OAuth 2.0 配置。

更多详情
IdentityManager

注册安全服务器和令牌端点。

更多详情
IdentityManager

将给定的 OAuth 2.0 访问令牌或 GeoScene Server 令牌注册到 IdentityManager。

更多详情
IdentityManager

用户成功登录后,将被重定向回应用程序。

更多详情
IdentityManager

在弹窗回调页中使用此方法将令牌和其他值传递回 IdentityManager。

更多详情
IdentityManager

当访问受保护的资源时,IdentityManager 可能会提示输入用户名和密码,并使用安全连接将它们发送到服务器。

更多详情
IdentityManager
Object

以 JSON 格式返回此对象的属性。

更多详情
IdentityManager

方法详细说明

checkAppAccess(resUrl, appId){Promise<object>}
起始版本:GeoScene Maps SDK for JavaScript 4.10

如果用户已登录以访问给定的资源,并且在使用给定的应用程序 id 时被允许这样做,则返回 credential。此外,它还返回一个 boolean viewOnly 属性,指示应用程序是否只可见。默认值为 false。如果用户尚未登录或无权访问,则 Promise 将被拒绝并调用其错误回调。

除非您正在构建许可的应用程序,否则这种情况通常并不常见。此外,请注意,应用程序需要与 GeoScene Enterprise Server 位于同一域中并且是注册在组织内的项目。

参数
resUrl String

资源 URL。

appId String

已注册的 OAuth 应用程序 id。

返回
类型 描述
Promise<Object> 解析为包含以下属性的对象:
属性 类型 描述
credential Credential 用户的凭据。
viewOnly boolean 指示应用程序是否仅可见。默认为 false
checkSignInStatus(resUrl){Promise<Credential>}

如果用户已登录以访问给定的资源,则返回 Credential。如果用户尚未登录,则 Promise 将被拒绝并调用其错误回调。

参数
resUrl String

资源 URL。

返回
类型 描述
Promise<Credential> 解析为已登录用户的返回凭据。
destroyCredentials()

销毁所有凭据。如果使用包含注销功能的应用程序,则最好调用此方法,因为通过 OAuth 生成的任何令牌都将自动撤销。

disablePostMessageAuth()
起始版本:GeoScene Maps SDK for JavaScript 4.19

禁止使用 window.postMessage 来处理由 enablePostMessageAuth 启用的身份验证请求。当 SPA 路径应用需要转换路径时,应调用此函数以防止内存泄漏。设置此项有助于清理和移除任何由 enablePostMessageAuth 添加的 windows's message 事件监听器。

主要的区别是:

  • GeoScene REST JS API 的 enablePostMessageAuth 方法的签名与此处解释的 GeoScene Maps SDK for JavaScript 所提供的签名不同。
  • 步骤三 (即 Embed App boots and Requests Auth) 在使用 GeoScene Maps SDK for JavaScript 时并不适用。
另请参阅
emit(type, event){Boolean}
起始版本:GeoScene Maps SDK for JavaScript 4.5

在实例上触发事件。仅当创建此类的子类时,才应使用此方法。

参数
type String

事件的名称。

event Object
optional

事件有效负载。

返回
类型 描述
Boolean 如果监听器收到通知,则为 true
enablePostMessageAuth(resUrl)
起始版本:GeoScene Maps SDK for JavaScript 4.19

启用 IdentityManager,以便为运行在子 iframe 中的应用程序中的给定资源提供身份验证请求服务。允许请求凭证的应用程序需与主程序同域。而其他应用的请求将被忽略。来自其他应用的请求将被忽略。

任何时候只能以这种方式认证一个资源。资源的 URL 应用作名为 arcgis-auth-portal 的参数的值,该参数包含在 iframe 的 src URL 中。iframe 的 src URL 还应包含另一个名为 arcgis-auth-origin 的参数,其值为 window.location.origin。这两个参数值都应使用 encodeURIComponent 进行 URL 编码。IdentityManager 或运行在 iframe 应用程序中的 UserSession (其需要用户身份验证才能访问给定资源) 将使用这些参数。

主要的区别是:

  • GeoScene REST JS API 的 enablePostMessageAuth 方法的签名与此处解释的 GeoScene Maps SDK for JavaScript 所提供的签名不同。
  • 步骤三 (即 Embed App boots and Requests Auth) 在使用 GeoScene Maps SDK for JavaScript 时并不适用。
参数
resUrl String
optional

资源 URL。默认值为 http://www.geosceneonline.cn/geoscene/sharing/rest

另请参阅
findCredential(url, userId){Credential}

返回由指定 url 标识的资源的 Credential。或者,您可以提供 userId 来查找特定用户的凭据。

参数
url String

服务器的 URL。

userId String
optional

您要为其获取凭据的 userId。

返回
类型 描述
Credential 由指定 URL 标识的资源的凭据。
findOAuthInfo(url){OAuthInfo}

返回传入的 Portal 服务器 URL 的 OAuthInfo 配置。

参数
url String

门户的 URL。

返回
类型 描述
OAuthInfo 传入的 Portal 服务器 URL 的 OAuthInfo 配置。
示例
require(["geoscene/identity/IdentityManager"], function(geosceneId) {
  let portalURL = "https://host.arcgis.com";
  findOAuthInfo = function (){
    let oAuthInfo = geosceneId.findOAuthInfo(portalURL)
    console.log(oAuthInfo.toJSON())
  }
});
findServerInfo(url){ServerInfo}

返回有关托管指定 URL 的服务器的信息。

参数
url String

服务器的 URL

返回
类型 描述
ServerInfo 传入的服务器 URL 的 ServerInfo 配置。
generateToken(serverInfo, userInfo, options){Promise<object>}

返回一个包含令牌及其到期时间的对象。必须提供包含令牌服务 URL 的 ServerInfo 对象和包含用户名和密码的用户信息对象。这是一个辅助方法,通常由子类调用以生成令牌。

参数
规范
serverInfo ServerInfo

包含令牌服务 URL 的 ServerInfo 对象。

userInfo Object

包含用户名和密码的用户信息对象。

options Object
optional

有关此对象的结构,请参阅下表。

规范
serverUrl String

服务器 URL。

token String

服务器令牌。

指示服务器是否需要 SSL。

返回
类型 描述
Promise<Object> 解析为一个包含令牌及其到期时间的对象。
getCredential(url, options){Promise<Credential>}

返回 Credential 对象,该对象可用于访问由输入 URL 标识的安全资源。

参数
规范
url String

安全资源的 URL。

options Object
optional

有关 options 对象的结构,请参阅下表。

规范
error Error
optional

服务器从上次尝试获取给定 URL 时返回的错误对象。

oAuthPopupConfirmation Boolean
optional
默认值:true

如果设置为 false,则在打开 OAuth 弹出窗口之前,不会向用户显示对话框。

token String
optional

用于上次未能成功尝试获取给定 URL 的令牌。

返回
类型 描述
Promise<Credential> 解析为包含 Credential 的对象,该对象可用于访问由输入 URL 标识的安全资源。
hasEventListener(type){Boolean}

指示实例上是否存在与提供的事件名称相匹配的事件监听器。

参数
type String

事件的名称。

返回
类型 描述
Boolean 如果类支持输入事件,则返回 true。
initialize(json)

在应用程序初始化期间,使用先前从 toJSON() 方法获得的 JSON 调用此方法,该方法用于重新填充 IdentityManager 的状态。

参数
json Object

toJSON() 方法获得的 JSON。

isBusy(){Boolean}

指示 IdentityManager 是否正忙于接受用户输入。例如,如果用户调用了 signIn 并正在等待响应,则返回 true

返回
类型 描述
Boolean IdentityManager 当前是否正在接受用户输入。
on(type, listener){Object}

在实例上注册事件处理程序。调用此方法将事件与监听器挂钩。

参数

要侦听的事件或者事件数组。

listener Function

事件触发时要调用的函数。

返回
类型 描述
Object 返回具有 remove() 方法的事件处理程序,可调用该方法来停止侦听事件。
属性 类型 描述
remove Function 调用时,从事件中移除监听器。
示例
view.on("click", function(event){
  // event is the event handle returned after the event fires.
  console.log(event.mapPoint);
});
registerOAuthInfos(oAuthInfos)

注册 OAuth 2.0 配置。

参数
oAuthInfos OAuthInfo[]

定义 OAuth 配置的 OAuthInfo 对象数组。

示例
require(["geoscene/identity/OAuthInfo", "geoscene/identity/IdentityManager"], function(OAuthInfo, geosceneId) {
  let oAuthInfo = new OAuthInfo({
    appId: "<registered client id>"
  }); // required parameter
  geosceneId.registerOAuthInfos([oAuthInfo]);
});
registerServers(serverInfos)

注册安全服务器和令牌端点。

参数
serverInfos ServerInfo[]

定义安全服务和令牌端点的 ServerInfos 对象数组。IdentityManager 会做出最佳猜测来确定安全服务器和令牌端点的位置。因此,在大多数情况下,不需要调用此方法。但是,如果您的服务器或令牌端点的位置不是标准的,请使用此方法注册该位置。

示例
require(["geoscene/identity/ServerInfo", "geoscene/identity/IdentityManager"], function(ServerInfo, geosceneId) {
  let serverInfo = new ServerInfo();
  serverInfo.server = "https://sampleserver6.arcgisonline.com";
  serverInfo.tokenServiceUrl = "https://sampleserver6.arcgisonline.com/arcgis/tokens/generateToken";
  serverInfo.hasServer = true;
  geosceneId.registerServers([serverInfo]);
});
registerToken(properties)

将给定的 OAuth 2.0 访问令牌或 GeoScene Server 令牌注册到 IdentityManager。有关其他信息,请参阅 registerOAuthInfosregisterToken 方法是一种高级工作流,用于在您不希望用户登录时预先注册长期令牌。

一旦用户登录,访问令牌就会在 IdentityManager 中注册。随后,在访问 Web 地图和存储在 GeoScene Online 中的其他项目或服务器上的资源时,应用程序发出的每个 AJAX 请求都会转发此令牌。

参数
规范
properties Object

有关 properties 对象的结构,请参阅下表。

规范
expires Number
optional

令牌过期时间,指定为自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。

server String

对于 GeoScene Online 或 Portal,这是 https://www.geosceneonline.cn/geoscene/sharing/rest 或类似于 https://www.example.com/portal/sharing/rest。对于 GeoScene Server,这类似于 https://www.example.com/geoscene/rest/services

optional

如果用户拥有 GeoScene Online 组织帐户并且组织配置为仅允许通过 SSL 访问资源,则将此设置为 true

token String

访问令牌。

userId String
optional

拥有访问令牌的用户的 ID。

setOAuthRedirectionHandler(handlerFunction)

用户成功登录后,将被重定向回应用程序。如果应用程序需要在重定向页面之前执行自定义逻辑,请使用此方法。IdentityManager 使用包含重定向属性的对象调用自定义处理程序函数。

参数
handlerFunction handlerCallback

调用时,传递给 setOAuthRedirectionHandler 的回调接收一个包含重定向属性的对象。

示例
require(["geoscene/identity/IdentityManager"],
function(geosceneId)
{
 geosceneId.setOAuthRedirectionHandler(function(info)
  {
   // Execute custom logic then perform redirect
   window.location = info.authorizeUrl + "?" + ioquery.objectToQuery(info.authorizeParams);
  });
});
setOAuthResponseHash(hash)

在弹窗回调页中使用此方法将令牌和其他值传递回 IdentityManager。

参数
hash String

令牌信息以及任何其他值都需要传递回 IdentityManager。

setProtocolErrorHandler(handlerFunction)

当访问受保护的资源时,IdentityManager 可能会提示输入用户名和密码,并使用安全连接将它们发送到服务器。由于潜在的浏览器限制,如果应用程序通过 HTTP 协议运行,则可能无法与服务器建立安全连接。在这种情况下,身份管理器将中止获取受保护资源的请求。要解决此问题,请使用 HTTPS 支持配置 Web 应用程序服务器,并通过 HTTPS 运行应用程序。这是生产环境的推荐解决方案。但是,对于不支持 HTTPS 的内部开发环境,可以定义一个协议错误处理程序,以允许身份管理器通过 HTTP 协议继续执行该过程。

参数
规范
handlerFunction Function

协议不匹配时要调用的函数。

规范
resourceUrl String

安全资源 URL。

serverInfo ServerInfo

ServerInfo 对象,描述在其中托管安全资源的服务器。

toJSON(){Object}

以 JSON 格式返回此对象的属性。它可以存储在 cookie 中或保留在 HTML5 LocalStorage 中,稍后用于:

  • 在用户下次打开应用程序时,初始化 IdentityManager。
  • 在网站的多个 web 页面之间共享 IdentityManager 的状态。这样,当用户多次启动您的应用或在网站的多个 web 页面之间导航时,系统就不会要求用户重复登录。
返回
类型 描述
Object 表示调用此方法的 IdentityManager 实例的 JSON 对象。

类型定义

handlerCallback(authorizeParams, authorizeUrl, oAuthInfo, resourceUrl, serverInfo)

调用 setOAuthRedirectionHandler() 时要执行的回调。

参数
authorizeParams Object

包含用于访问安全服务的授权参数的对象。请参阅下表,其中描述了此对象的属性。

规范
client_id String

已注册应用程序的应用程序 ID。

response_type String

返回的响应类型。

state String

状态参数作为凭据的 oAuthState 属性中的对象传回。

expiration Number

过期时间(以分钟为单位)。

locale String

正在使用的区域设置。

redirect_uri String

重定向 URL 表示成功登录后用户可以重定向到的有效位置。

authorizeUrl String

门户的 OAuth 2.0 授权 URL。

oAuthInfo OAuthInfo

对 OAuthInfo 对象的引用。

resourceUrl String

所访问资源的 URL。

serverInfo ServerInfo

ServerInfo 对象,描述在其中托管安全资源的服务器。

事件概述

名称 类型 描述
{credential: Credential}

在创建凭据时触发。

更多详情
IdentityManager

在创建 IdentityManager 对话框时触发。

更多详情
IdentityManager

事件详细说明

credential-create

在创建凭据时触发。

属性
credential Credential

返回的凭据。

dialog-create

在创建 IdentityManager 对话框时触发。这用于提示用户输入其凭据。

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息