此对象提供用于管理以下资源的用户凭据的框架和帮助程序方法:
-
受保护的 geosceneonline.cn 或 GeoScene 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 | ||
禁止使用 | 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 |
方法详细说明
-
起始版本: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 Objectoptional事件有效负载。
返回类型 描述 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 Stringoptional资源 URL。默认值为
http://www.geosceneonline.cn/geoscene/sharing/rest
。
-
findCredential(url, userId){Credential}
-
返回由指定 url 标识的资源的 Credential。或者,您可以提供 userId 来查找特定用户的凭据。
参数url String服务器的 URL。
userId Stringoptional您要为其获取凭据的 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 配置。
-
返回一个包含令牌及其到期时间的对象。必须提供包含令牌服务 URL 的 ServerInfo 对象和包含用户名和密码的用户信息对象。这是一个辅助方法,通常由子类调用以生成令牌。
参数规范serverInfo ServerInfo包含令牌服务 URL 的 ServerInfo 对象。
userInfo Object包含用户名和密码的用户信息对象。
options Objectoptional有关此对象的结构,请参阅下表。
规范serverUrl String服务器 URL。
token String服务器令牌。
ssl Boolean指示服务器是否需要 SSL。
返回类型 描述 Promise<Object> 解析为一个包含令牌及其到期时间的对象。
-
getCredential(url, options){Promise<Credential>}
-
返回 Credential 对象,该对象可用于访问由输入 URL 标识的安全资源。
参数规范url String安全资源的 URL。
options Objectoptional有关 options 对象的结构,请参阅下表。
规范error Erroroptional服务器从上次尝试获取给定 URL 时返回的错误对象。
oAuthPopupConfirmation Booleanoptional默认值:true如果设置为 false,则在打开 OAuth 弹出窗口之前,不会向用户显示对话框。
token Stringoptional用于上次未能成功尝试获取给定 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 配置。
参数定义 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。有关其他信息,请参阅 registerOAuthInfos。
registerToken
方法是一种高级工作流,用于在您不希望用户登录时预先注册长期令牌。一旦用户登录,访问令牌就会在 IdentityManager 中注册。随后,在访问 Web 地图和存储在 GeoScene Online 中的其他项目或服务器上的资源时,应用程序发出的每个 AJAX 请求都会转发此令牌。
参数规范properties Object有关 properties 对象的结构,请参阅下表。
规范expires Numberoptional令牌过期时间,指定为自 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。
ssl Booleanoptional如果用户拥有 GeoScene Online 组织帐户并且组织配置为仅允许通过 SSL 访问资源,则将此设置为
true
。token String访问令牌。
userId Stringoptional拥有访问令牌的用户的 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 ServerInfoServerInfo 对象,描述在其中托管安全资源的服务器。
-
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 ServerInfoServerInfo 对象,描述在其中托管安全资源的服务器。
事件概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
{credential: Credential} |
在创建凭据时触发。 更多详情 |
IdentityManager | |
在创建 IdentityManager 对话框时触发。 更多详情 |
IdentityManager |
事件详细说明
-
credential-create
-
在创建凭据时触发。
- 属性
-
credential Credential
返回的凭据。
-
dialog-create
-
在创建 IdentityManager 对话框时触发。这用于提示用户输入其凭据。