主题
访问安全资源
字数统计: 1.3k 字
阅读时长: 约 2 分钟
当前版本: 4.29
您的应用程序可能需要访问仅限于授权用户使用的安全资源。例如,您的组织可能托管只有经过验证的用户才能访问的私有数据图层或要素服务。GeoScene 提供了多种方法来安全访问组织的内容和服务。GeoScene Maps SDK for JavaScript 为使用各种方法访问受保护的 GeoScene Enterprise 资源提供了全面支持。
身份验证方法
OAuth 2.0 - 保护对服务器资源的授权访问。
GeoScene 令牌 - GeoScene 专有的基于令牌的身份验证机制。
网络认证 - HTTPS 安全服务/集成 Windows 身份验证 (IWA)。
OAuth 2.0
OAuth 2.0 是在各种支持 Web 的设备和服务器之间处理身份验证决策的标准。GeoScene 平台确定用户的真实性,并向客户端应用程序提供令牌。然后可在后续的安全资源请求中使用该令牌。此功能在 GeoScene Enterprise 2.0 及更高版本中均可用,并且可与用户登录和应用程序登录一起使用。
GeoScene 令牌
基于令牌的身份验证服务要求在安全资源的每个请求中包含令牌。GeoScene Enterprise 2.0 及更高版本均支持基于令牌的身份验证,该身份验证可用于用户登录和应用程序登录。
网络认证
通过 HTTP basic、HTTP digest 或集成 Windows 身份验证 (IWA) 资源进行的 HTTP/Windows 身份验证受服务上设置的用户名和密码的保护。然后,通过浏览器弹出窗口或会话 cookie 提供提示。使用 IWA 时,登录通过 Microsoft Windows Active Directory 进行管理。用户不会登录和退出门户网站;相反,当他们打开网站时,将使用用于登录 Windows 的相同帐户登录。
用户登录
支持用户登录的应用程序负责提供登录对话框,用于提示用户输入凭据。应用程序负责通过 HTTPS 传输这些凭据来确保它们的安全性。
OAuth 2.0 和 GeoScene 令牌均使用用户登录方法。在此模式中,用户授权您的应用程序代表他们访问内容和服务。在这种情况下,应用程序会提示用户输入用户名和密码,然后使用其凭据访问内容。
在应用程序中实现这些安全方法可能需要大量工作。在用户登录方法中,GeoScene Maps SDK for JavaScript 提供了一些类来帮助简化身份验证并自动执行该过程。两个主要类是 IdentityManager 和 OAuthInfo 类 (如果使用 OAuth 2.0 方法,则使用后者)。除其他类外,这些类位于 geoscene/identity 命名空间中。
要使用 IdentityManager,只需将 geoscene/identity/IdentityManager
作为 require
语句的一部分即可。应用程序运行并请求安全资源后,IdentityManager 将接管并处理提示用户输入相应凭据的过程。提供正确的凭据后,将生成一个令牌并将其追加到资源。除此之外,它还负责根据需要刷新令牌。
使用 OAuth 方法时,还需添加 OAuthInfo 类并将其注册到 IdentityManager。OAuthInfo 类使用已注册的应用程序。
js
require (["geoscene/identity/OAuthInfo", "geoscene/identity/IdentityManager"], function(OAuthInfo, geosceneId) {
var oAuthInfo = new OAuthInfo({
appId: "<enter the registered app id here>"
});
geosceneId.registerOAuthInfos([oAuthInfo]);
});
应用程序登录
在某些情况下,您可能拥有安全的资源,但可能不希望最终用户必须登录才能访问它们。在这种情况下,应用程序登录将代表您为用户提供对内容的访问权限。
独立的 GeoScene Server
在此方案中,您的应用程序将使用属于有权访问这些资源的用户的硬编码凭据访问来自独立 GeoScene Server 的服务。
这些凭据保存在代理中。这允许应用程序访问用户可能无权访问的内容。无需登录提示,因为凭据已通过代理中指定的凭据提供。
应用程序中的实现
应用程序代码中的唯一要求是指定应代理的 URL,然后指向代理文件的正确位置。
首先,将 geoscene/core/urlUtils 添加到
require
语句中。接下来,指定安全资源的 URL。
最后,指定代理文件的位置。
js
require (["geoscene/core/urlUtils"], function(urlUtils) {
urlUtils.addProxyRule({
urlPrefix: "my-standalone-geoscene-server.com"
proxyUrl: "/proxy/"
});
});
其他资源
以下是提供有关上述各种主题信息的附加资源。