此对象提供用于管理以下资源的用户凭据的框架和帮助程序方法:
-
受保护的 geoscene.cn 或 geoscene Enterprise 门户资源(例如 web 地图)。
-
使用基于令牌的身份验证保护 GeoScene Server 资源。如果您的应用程序访问不同域的服务,则视为跨域请求,您需要设置代理或使用 CORS(如果浏览器支持)。如果支持 CORS,Identity Manager 就知道通过 https 向令牌服务发出请求。
阻止通过 http 的身份验证请求,因为可以在服务器日志中查看通过 GET 发送的敏感数据。为防止出现这种情况,Identity Manager 要求您使用 POST over https 来确保您的凭据是安全的。查看使用代理和 CORS 帮助主题以获取更多详细信息。
IdentityManager 模块与 API 中的其他模块略有不同。它不是返回一个类构造函数,而是返回一个已经由这个模块创建的单例实例。
- 另请参阅:
属性概述
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
微件 | 更多信息 对话框微件用于在应用程序尝试访问安全资源时质询用户的凭据。 | 更多信息 | IdentityManager | |
整数 | 更多信息 令牌的建议生存期(以分钟为单位)。 | 更多信息 | IdentityManager |
属性详情
-
dialog Widget
-
对话框微件用于在应用程序尝试访问安全资源时质询用户的凭据。此属性在对话框创建事件触发后可用。
-
tokenValidity Number
-
令牌的建议生存期(以分钟为单位)。
- 默认值:60
方法概述
名称 | 返回类型 | 描述 | 类 | |
---|---|---|---|---|
Promise<Object> | 更多信息 如果用户已经登录以访问给定的资源并且在使用给定的应用程序 ID 时被允许这样做,则返回一个凭据。 | 更多信息 | IdentityManager | |
Promise<Credential> | 更多信息 如果用户已经登录以访问给定资源,则返回凭据。 | 更多信息 | IdentityManager | |
更多信息 销毁所有凭据。 | 更多信息 | IdentityManager | ||
更多信息 禁止使用 | 更多信息 | IdentityManager | ||
布尔值 | 更多信息 在实例上发出事件。 | 更多信息 | IdentityManager | |
更多信息 使 IdentityManager 能够为在子 iframe 中运行的应用程序为给定资源提供身份验证请求。 | 更多信息 | IdentityManager | ||
Credential | 更多信息 返回由指定 url 标识的资源的凭据。 | 更多信息 | IdentityManager | |
OAuthInfo | 更多信息 返回传入的门户服务器 URL 的 OAuthInfo 配置。 | 更多信息 | IdentityManager | |
ServerInfo | 更多信息 返回有关托管指定 URL 的服务器的信息。 | 更多信息 | IdentityManager | |
Promise<Object> | 更多信息 返回一个包含令牌及其到期时间的对象。 | 更多信息 | IdentityManager | |
Promise<Credential> | 更多信息 返回可用于访问由输入 URL 标识的安全资源的 Credential 对象。 | 更多信息 | IdentityManager | |
布尔值 | 更多信息 指示实例上是否存在与提供的事件名称匹配的事件侦听器。 | 更多信息 | IdentityManager | |
更多信息 在应用程序初始化期间使用先前从 toJSON() 方法获得的 JSON 调用此方法,该方法用于重新水合 IdentityManager 的状态。 | 更多信息 | IdentityManager | ||
布尔值 | 更多信息 指示 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 API for JavaScript 4.10
-
如果用户已经登录以访问给定的资源并且在使用给定的应用程序 ID 时被允许这样做,则返回一个凭据。此外,它还返回一个
boolean
viewOnly
属性,指示应用程序是否只能查看。默认值为false
。如果用户尚未登录或无权访问,则 Promise 将被拒绝并调用其错误回调。除非您正在构建许可的应用程序,否则这种情况通常并不常见。此外,请注意,仅当您的应用程序与 GeoScene Enterprise Server 位于同一域中并且仅适用于在
GeoScene
组织中注册为项目的应用程序时,才应使用此方法。参数:resUrl String资源的 URL。
appId String已注册的 OAuth 应用程序 ID。
返回:类型 说明 Promise<Object> 解析为包含以下属性的对象: 属性 类型 说明 credential Credential 用户的凭据。 viewOnly 布尔值 指示应用程序是否仅可见。默认为 false
。
-
checkSignInStatus(resUrl){Promise<Credential>}
-
如果用户已经登录以访问给定资源,则返回凭据。如果用户尚未登录或无权访问,则promise将被拒绝并调用其错误回调。
参数:resUrl String资源的 URL。
返回:类型 说明 Promise<Credential> 解析为已登录用户的返回凭据。
-
destroyCredentials()
-
销毁所有凭据。如果使用包含注销功能的应用程序,则最好调用此方法,因为通过 OAuth 生成的任何令牌都将自动吊销。
-
disablePostMessageAuth()起始版本:GeoScene API for JavaScript 4.19
-
止使用
window.postMessage
来处理由 enablePostMessageAuth 启用的身份验证请求。应调用此函数以防止 SPA 路由应用中在需要转换路由时出现内存泄漏。设置此项有助于清理和删除任何 enablePostMessageAuth 添加的windows
message
事件侦听器- 另请参阅:
-
emit(type, event){Boolean}起始版本:GeoScene API for JavaScript 4.5
-
在实例上发出事件。仅当创建此类的子类时,才应使用此方法。
参数:type String事件的名称。
event Object可选事件负载。
返回:类型 说明 布尔值 true
如果通知了侦听器
-
enablePostMessageAuth(resUrl)起始版本:GeoScene API for JavaScript 4.19
-
IdentityManager 能够为在子 iframe 中运行的应用程序为给定资源提供身份验证请求。唯一允许请求凭证的应用程序要么在
*.geoscene.cn
上运行,要么与主机应用程序在同一源上运行。来自其他应用的请求将被忽略。任何时候只能以这种方式认证一个资源。资源的 URL 应用作名为
arcgis-auth-portal
的参数的值,该参数包含在 iframe 的src
URL 中。iframe 的src
URL 还应包含另一个名为arcgis-auth-origin
的参数,其值为window.location.origin
。这两个参数值都应该使用encodeURIComponent
进行 URL 编码。IdentityManager 或 iframe 应用程序中运行的 UserSession 需要用户身份验证才能访问给定资源时使用这些参数参数:resUrl String可选资源的 URL。
- 另请参阅:
-
findCredential(url, userId){Credential}
-
返回由指定 url 标识的资源的凭据。或者,您可以提供 userId 来查找特定用户的凭据。
参数:url String服务器的 URL。
userId String可选您要为其获取凭据的用户 ID。
返回:类型 说明 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 Object可选有关此对象的结构,请参阅下表。
规范:serverUrl String服务器 URL。
token String服务器令牌。
ssl Boolean指示服务器是否需要 SSL。
返回:类型 说明 Promise<Object> 解析为包含令牌和过期时间的对象。
-
getCredential(url, options){Promise<Credential>}
-
返回可用于访问由输入 URL 标识的安全资源的 Credential 对象。
参数:规范:url String安全资源的 URL。
options Object可选有关选项对象的结构,请参阅下表。
规范:error Error可选服务器从上次尝试获取给定 URL 时返回的错误对象。
oAuthPopupConfirmation Boolean可选默认值:true如果设置为 false,则在打开 OAuth 弹出窗口之前,不会向用户显示对话框。
token String可选用于上次尝试获取给定 URL 的失败尝试的令牌。
返回:类型 说明 Promise<Credential> 解析为包含可用于访问由输入 URL 标识的安全资源的凭据的对象。
-
hasEventListener(type){Boolean}
-
指示实例上是否存在与提供的事件名称匹配的事件侦听器。
参数:type String事件的名称。
返回:类型 说明 布尔值 如果类支持输入事件,则返回 true。
-
initialize(json)
-
在应用程序初始化期间使用先前从 toJSON() 方法获得的 JSON 调用此方法,该方法用于重新水合 IdentityManager 的状态。
参数:json Object从 toJSON() 方法获得的 JSON。
-
isBusy(){Boolean}
-
指示 IdentityManager 是否正忙于接受用户输入。例如,如果用户调用了 signIn 并正在等待响应,则返回
true
。返回:类型 说明 布尔值 IdentityManager 当前是否正在接受用户输入。
-
on(type, listener){Object}
-
在实例上注册事件处理程序。调用此方法以将事件与侦听器挂钩。
参数:要侦听的事件或事件数组。
listener Function事件触发时调用的函数。
返回:类型 说明 Object 返回带有 remove()
方法的事件处理程序,应调用该方法以停止侦听事件。属性 类型 说明 remove 函数 调用时,从事件中删除侦听器。 示例: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 中注册。随后,应用程序发出的每个 AJAX 请求都会在访问 Web 地图和存储在 GeoScene Online 中的其他项目或服务器上的资源时转发此令牌。
参数:规范:properties Object有关属性对象的结构,请参阅下表。
规范:expires Number可选令牌过期时间指定为自 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 Boolean可选如果用户拥有 GeoScene Online 组织帐户并且组织配置为仅允许通过 SSL 访问资源,则将此设置为
true
。token String访问令牌。
userId String可选拥有访问令牌的用户的 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 中,以后用于:
- 在用户下次打开应用程序时初始化标识管理器。
- 在网站的多个网页之间共享标识管理器的状态。这样,当用户多次启动您的应用或在您的网站中的多个网页之间导航时,系统就不会要求用户重复登录。
返回:类型 说明 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 |
事件详述
-
credential-create
-
在创建凭据时触发。
- 属性:
-
credential Credential
返回的凭据。
-
dialog-create
-
在创建标识管理器对话框时触发。这用于提示用户输入其凭据。