第三方验证允许已通过外部机制验证的用户登录到 SGD。
如果在使用 SGD Webtop,唯一可以使用的第三方验证形式是 Web 验证。如果使用 SGD Web 服务开发您自己的 Webtop 应用程序,则可以使用任何第三方验证机制。
默认情况下,第三方验证处于禁用状态。
本节包括以下主题:
用户通常使用 Web 浏览器的验证对话框直接在外部机制中键入用户名和密码。
第三方验证以信任为基础。SGD 相信第三方机制已正确验证了用户,因此这些用户对于 SGD 而言已通过验证。
接下来,SGD 会执行搜索以确定用户身份和用户配置文件。可以使用以下搜索方法:
搜索本地系统信息库
搜索 LDAP 系统信息库
使用默认的第三方身份
如果启用了多个搜索方法,则会按上文的列出顺序尝试这些方法。将使用所找到的第一个匹配的用户身份。以下各节将介绍这些搜索方法。
如果搜索没有生成匹配项,SGD 将无法为用户确定身份,用户将无法登录。如果使用的是 SGD Webtop,则会显示标准登录页面,以便用户可以使用系统验证登录。
“搜索本地系统信息库”方法会在本地系统信息库中搜索 "Name"(名称)属性与用户的第三方用户名相匹配的用户配置文件。如果未找到匹配项,将对 "Login Name"(登录名称)属性执行搜索,最后对 "Email Address"(电子邮件地址)属性执行搜索。如果未找到用户配置文件,则尝试下一个搜索方法。
“搜索 LDAP 系统信息库”方法将在 LDAP 目录中搜索属性与用户键入的用户名相匹配的 LDAP 对象。默认情况下,SGD 搜索以下属性:
cn
uid
mail
如果找到了 LDAP 对象,则会根据 LDAP 对象检查用户键入的密码。如果验证失败,则尝试使用下一个验证机制。
如果未找到 LDAP 对象,则尝试下一个搜索方法。
用户身份是用户的 LDAP 对象的 DN。在 SGD 数据存储中,该用户身份位于 LDAP 名称空间中。在管理控制台中,文本 "(LDAP)" 显示在该用户身份的旁边。在命令行上,该用户身份位于 .../_service/sco/tta/ldapcache 中。
接下来,SGD 搜索用户配置文件。搜索用户配置文件时,可以指定 "Use Default LDAP Profile"(使用默认的 LDAP 配置文件)或 "Use Closest Matching LDAP Profile"(使用最匹配的 LDAP 配置文件)。"Use Default LDAP Profile"(使用默认的 LDAP 配置文件)是默认设置。
如果选择 "Use Default LDAP Profile"(使用默认的 LDAP 配置文件),则会将配置文件对象 o=System Objects/cn=LDAP Profile
用于用户配置文件。
如果选择 "Use Closest Matching LDAP Profile"(使用最匹配的 LDAP 配置文件),考虑到 LDAP 与 SGD 命名系统之间的差异,SGD 将通过搜索本地系统信息库确定用户配置文件。SGD 将搜索以下用户配置文件,直到找到匹配项:
与用户 LDAP 对象同名的用户配置文件。
例如,如果 LDAP 对象为 cn=Emma Rald,cn=Sales,dc=example,dc=com
,SGD 将在本地系统信息库中搜索 dc=com/dc=example/cn=Sales/cn=Emma Rald
。
与用户的 LDAP 对象在同一组织单元,但名称为 cn=LDAP Profile
的用户配置文件。
例如:dc=com/dc=example/cn=Sales/cn=LDAP Profile
。
任意父组织单元内的名称为 cn=LDAP Profile
的用户配置文件。
例如:dc=com/dc=example/cn=LDAP Profile
。
如果没有匹配项,将使用 o=System Objects/cn=LDAP Profile
配置文件对象作为用户配置文件。
设置第三方验证包括以下配置步骤:
(可选)准备使用 LDAP 目录。
第三方验证可配置为搜索 LDAP 目录来确定用户身份。
检查并确保您使用的是支持的 LDAP 目录,请参见第 2.4.3.1 节 “支持的 LDAP 目录”。
可能还需要其他配置才能组合使用 SGD 和 LDAP 目录,请参见第 2.4.3 节 “为 LDAP 验证做准备”。
对于 LDAP 部署比较复杂的组织,请使用服务对象管理及调整 LDAP 配置。请参见第 2.8.4 节 “使用服务对象”。
启用第三方验证。
默认情况下,启用了第三方验证时,SGD 管理员无法登录到 SGD,请参见第 2.6.8 节 “SGD 管理员和第三方验证”。
启用第三方验证机制。
用于第三方验证的最常见验证机制是 Web 验证。请参见第 2.6.5 节 “启用 Web 验证”。
在 SGD 管理控制台中,显示 "SGD Authentication Configuration"(Secure Global Desktop 验证配置)向导。
转到 "Global Settings"(全局设置)→ "Secure Global Desktop Authentication"(Secure Global Desktop 验证)选项卡,然后单击 "Change Secure Global Desktop Authentication"(更改 Secure Global Desktop 验证)按钮。
在 "Third-Party/System Authentication"(第三方/系统验证)步骤中,选中 "Third-Party Authentication"(第三方验证)复选框。
在 "Third-Party Authentication - User Identity and Profile"(第三方验证 - 用户身份和用户配置文件)步骤中,选中用于查找用户身份的一个或多个搜索方法所对应的复选框。
有关搜索方法工作方式的详细信息,请参见第 2.6.1 节 “第三方验证的工作方式”。
如果选中 "Search LDAP Repository"(搜索 LDAP 系统信息库)复选框,则选择一个用于查找 LDAP 用户配置文件的选项。
(可选)在 "LDAP Repository Details"(LDAP 系统信息库详细信息)步骤中,配置 LDAP 目录详细信息。
只有在步骤 3 中选择了 LDAP 搜索方法,才会显示 "LDAP Repository Details"(LDAP 系统信息库详细信息)步骤。
对于 "Repository Type"(系统信息库类型),选择 "LDAP" 选项。
即使要使用 Microsoft Active Directory 服务器进行 LDAP 验证,也要选择此选项。"Active Directory" 选项将启用 Active Directory 验证,请参见第 2.2 节 “Active Directory 验证”。
在 "URL" 字段中,键入一个或多个 LDAP 目录服务器的 URL。
例如:ldap://melbourne.example.com
。
如果键入多个 URL,请用分号 (;) 分隔各个 URL。
SGD 将按照列出顺序使用 URL。如果列表中的第一个 LDAP 目录服务器不可用,则尝试下一个。
要使用安全连接与 LDAP 目录服务器建立连接,请使用 ldaps://
URL。
所有 URL 必须为同一类型,ldap://
或 ldaps://
。不能混合使用 ldap://
和 ldaps://
URL。
如果 LDAP 目录使用非标准端口,请在 URL 中指定端口号,例如 ldap://melbourne.example.com:5678
。否则可省略端口号。
可指定一个 DN 用作搜索基,例如,ldap://melbourne.example.com/dc=example,dc=com
。这将指定用于搜索用户身份的 LDAP 目录部分。
在 "User Name"(用户名)和 "Password"(密码)字段中键入 LDAP 用户的详细信息。
用户名必须是用户的 DN,例如 cn=sgd-user,cn=Users,dc=example,dc=com
。此处为管理员绑定 DN,有关更多详细信息,请参见第 2.4.3.3 节 “LDAP 绑定 DN 和密码更改”。
由于您只能输入一个用户名和密码,所以此用户必须能够搜索 URL 字段中列出的所有 LDAP 目录服务器。
如果目录服务器支持匿名绑定,则可以省略用户名和密码。您必须能够对用户数据执行 LDAP 查询,才能使用匿名绑定。
在 "Review Selections"(查看所做的选择)步骤中,检查验证配置,然后单击 "Finish"(完成)。
如果启用了 LDAP 搜索方法,SGD 会创建一个名为 generated
的服务对象。服务对象用于管理目录服务配置,有关更多详细信息,请参见第 2.8.4 节 “使用服务对象”。
Web 验证(或 HTTP 验证)是最常用的第三方验证。使用 Web 验证时,Web 服务器执行验证,SGD 确定用户身份和用户配置文件。
Web 验证的优点是您可以使用任意 Web 服务器验证插件,只要该插件设置了 REMOTE_USER
环境变量。如果您使用的验证插件设置了其他变量,可将 SGD 配置为支持该变量,请参见第 2.6.6 节 “将验证插件用于 Web 验证”。
可将 Web 验证与系统验证搭配使用。最好至少启用一个系统验证机制作为备用。如果 SGD 找不到用户的用户配置文件,将显示标准 SGD 登录页面,这样,用户能够使用系统验证机制进行验证。
Web 验证按以下方式工作:
一个 Web 服务器管理员负责保护 Web 站点的一个区域。对于 SGD,这通常是 https://
URL,其中 server.example.com
/sgdserver.example.com
是 SGD 服务器的名称。
当 Web 浏览器首次尝试访问受保护区域内的 URL 时,Web 服务器通过请求验证来做出响应。
Web 浏览器向用户显示一个验证对话框。SGD 用户看不到 SGD 登录屏幕。
用户键入用户名和密码,浏览器将其发送至 Web 服务器。
Web 服务器验证用户的凭证,并授予对所请求的 URL 的访问权限。SGD 用户直接转到各自的 Webtop。
Web 浏览器会将用户的凭证缓存起来,因为这些凭证必须随每个请求一起发送至受保护的 URL。浏览器会自动发送凭证。凭证将按以下方式进行缓存:
临时。在用户关闭浏览器之前一直缓存凭证。
永久。用户需选中浏览器验证对话框中的相应复选框。
一旦 Web 服务器对用户进行了验证,它就会设置 REMOTE_USER
环境变量。此变量包含所验证用户的用户名。SGD 将提取 REMOTE_USER
变量的值,将其用于搜索用户身份和用户配置文件。SGD 支持四种用于确定用户身份和用户配置文件的搜索方法,请参见第 2.6.1 节 “第三方验证的工作方式”。
下面是对 SGD 使用 Web 验证时需要考虑的主要安全事项:
Web 浏览器缓存。使用 Web 验证时,Web 浏览器会缓存用户的凭证,实际上还会缓存用户到 SGD 的验证。为了将其他用户使用所缓存凭证的风险降到最低,请确保用户执行以下操作:
在 Web 浏览器验证对话框中不选中 "save password"(保存密码)复选框。这将确保 Web 浏览器不会永久保存用户凭证。
注销后关闭 Web 浏览器。这将从临时缓存中清除用户的凭证。从 SGD 注销不会清除凭证。
保证 Web 服务器的安全。使用安全 (HTTPS) Web 服务器,防止用户凭证以纯文本形式发送出去。
可信用户。SGD 能够信任 Web 服务器的验证,因为 SGD Webtop 和 SGD 服务器共享一个机密信息,即可信用户的用户名和密码。此可信用户的凭证是在安装 SGD 时默认创建的。您可能想要更改这些凭证,请参见第 2.6.9 节 “可信用户和第三方验证”了解如何执行此操作的详细信息。
要启用 Web 验证,必须同时配置 Web 服务器和 SGD。
通过保护每台 SGD 主机上的 /sgd
URL 来配置用于 Web 验证的 Web 服务器。如何保护 /sgd
URL 取决于您的 Web 服务器,请参见 Web 服务器文档了解详细信息。对于 SGD Web 服务器,可保护 Apache 或 Tomcat 组件中的 /sgd
URL。有关如何执行此操作的示例,请参见第 2.6.5.1 节 “如何对 SGD Web 服务器启用 Web 验证”。
要将 SGD 配置为支持 Web 验证,必须启用第三方验证,请参见第 2.6.3 节 “如何启用第三方验证”。
对于 SGD Web 服务器,可保护 Apache 或 Tomcat 组件中的 /sgd
URL。此过程用于保护 Apache 中的 URL。
对阵列中的每个 SGD 服务器重复以下过程。
在 SGD 主机上,以超级用户 (root) 身份登录。
创建 Web 服务器密码文件。
使用 /opt/tarantella/webserver/apache/
程序创建 Web 服务器密码文件并添加条目。
apache-version
/bin/htpasswd
例如,要创建 /etc/httpd/passwords
密码文件并为用户 jdoe
添加一个条目,请使用以下命令:
# /opt/tarantella/webserver/apache/apache-version
/bin/htpasswd -c \ /etc/httpd/passwords jdoe New password:Re-type new password:
password
Adding password for user jdoe
password
例如,要在 /etc/httpd/passwords
文件中为用户 privers
添加一个条目,请使用以下命令:
# /opt/tarantella/webserver/apache/apache-version
/bin/htpasswd \ /etc/httpd/passwords privers New password:Re-type new password:
password
Adding password for user privers
password
更改对 Web 服务器密码文件的权限。
此密码文件必须可供 ttaserv
用户访问。
例如,如果 Web 服务器密码文件是 /etc/httpd/passwords
,请运行以下命令:
# chmod 440 /etc/httpd/passwords # chown ttaserv:ttaserv /etc/httpd/password
编辑 Apache 配置文件并保护 /sgd
URL。
Apache 配置文件为 /opt/tarantella/webserver/apache/
。
apache-version
/conf/httpd.conf
在配置文件末尾插入以下指令:
SetEnvIf Request_URI "\.(class|cab|jar|gif|der)$" sgd_noauth_ok <Location /sgd> Order Allow,Deny Allow from env=sgd_noauth_ok AuthUserFilefile-path
AuthNameauth-domain
Authtype Basic Require valid-user Satisfy any </Location>
其中,file-path
是指向 Web 服务器密码文件的完整路径,auth-domain
是 Web 浏览器验证对话框中显示的授权领域的名称。
SetEnvIf
指令可保护 /sgd
URL,而不会影响 SGD Web 服务器欢迎页面的运行。
有关如何配置 Location
指令的更多信息,请参阅 Apache 文档。
您必须使用 Location
指令而非 Directory
指令,因为 SGD Web 服务器委托 Tomcat 管理 /sgd
URL。这已在 Apache 配置文件中进行了配置,这意味着您不能使用 .htaccess
文件来保护 /sgd
URL。
保存更改。
编辑 Tomcat 配置文件。
必须将 SGD Web 服务器的 Tomcat 组件配置为信任 Web 服务器的验证。
Tomcat 配置文件为 /opt/tarantella/webserver/tomcat/
。
tomcat-version
/conf/server.xml
修改 AJP 1.3 Connector 的配置。
按以下方式将 tomcatAuthentication="false"
属性添加到 <Connector>
元素:
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false" />
保存更改。
重新启动 SGD Web 服务器。
只有重新启动 SGD Web 服务器,配置更改才能生效。
# tarantella restart webserver
SGD Web 验证依赖设置 REMOTE_USER
环境变量的 Web 服务器来识别用户。如果使用验证插件实现 Web 验证,则插件很可能使用其他环境变量来识别用户。
最好在配置 SGD 之前安装验证插件并确认它可以正常运行。
除了 REMOTE_USER
环境变量,SGD 还支持 SSL_CLIENT_S_DN_CN
变量。将客户端证书用于 Web 验证时设置此环境变量。有关如何启用对此变量的支持的详细信息,请参见第 2.6.7 节 “将客户端证书用于 Web 验证”。
如果您的插件使用其他环境变量,必须将 Webtop Web 应用程序配置为支持您的环境变量。请参见第 2.6.6.1 节 “如何为 Web 验证启用对其他环境变量的支持”。
在开始之前,请查阅 Web 服务器验证插件的文档,记录该插件设置用于识别用户的环境变量。
必须在 SGD Web 服务器上启用 HTTPS 连接。可在启动 SGD 服务器或 SGD Web 服务器时使用 --https
参数来启用 HTTPS 连接。
对阵列中的每个 SGD 服务器重复以下过程。
在 SGD 主机上,以超级用户 (root) 身份登录。
配置 SGD Web 服务器的 Apache 组件将您的变量转发给 Tomcat 组件。
编辑 Apache 配置文件。
此文件为 /opt/tarantella/webserver/apache/
。
apache-version
/conf/httpd.conf
添加一条 JkEnvVar
指令转发您的环境变量。
搜索现有 JKEnvVar
指令,并为您自己的变量添加一条指令,如下所示:
#JkEnvVar SSL_CLIENT_S_DN_CN " "
#JkEnvVar HTTP_SAFEWORD_USER " "
JKEnvVar Your-Variable
" "
使该变量在 /sgd
位置可用。
在文件末尾添加以下 Location
指令:
<Location "/sgd"> SSLOptions +StdEnvVars +ExportCertData </Location>
保存更改。
将 Webtop Web 应用程序配置为使用您的环境变量。
转至 SGD Web 应用程序资源目录。
cd /opt/tarantella/webserver/tomcat/tomcat-version
cd webapps/sgd/resources/jsp
编辑 webtopsession.jsp
文件并添加对您的变量的支持。
搜索 HTTP_SAFEWORD_USER
或 SSL_CLIENT_S_DN_CN
变量,并将这两个变量的代码用作示例,了解如何实现您自己的变量。
保存更改。
重新启动 SGD Web 服务器。
通过验证用户是否在客户端设备上安装了有效的公钥基础结构 (public key infrastructure, PKI) 证书,可提高 Web 验证的安全性。
要使用 PKI 证书,必须配置 Web 服务器,使其能够访问您需要客户端证书的 /sgd
URL。SGD Web 服务器包含 Apache mod_ssl
(http://www.modssl.org) 模块,您可以使用该模块来设置 PKI 客户端证书。
SGD Web 验证依赖设置 REMOTE_USER
变量的 Web 服务器来识别用户。但是,当使用客户端证书对用户进行验证时,系统通常使用另一个环境变量来识别用户。对于 Apache Web 服务器(包括 SGD Web 服务器),将使用 SSL_CLIENT_S_DN_CN
变量。有关如何添加对此变量的支持的详细信息,请参见第 2.6.7.1 节 “如何启用对 SSL_CLIENT_S_DN_CN 变量的支持”。如果 Web 服务器设置了其他变量,请参见第 2.6.6.1 节 “如何为 Web 验证启用对其他环境变量的支持”。
必须在 SGD Web 服务器上启用 HTTPS 连接。可在启动 SGD 服务器或 SGD Web 服务器时使用 --https
参数来启用 HTTPS 连接。
对阵列中的每个 SGD 服务器重复以下过程。
在 SGD 主机上,以超级用户 (root) 身份登录。
配置 SGD Web 服务器的 Apache 组件将 SSL_CLIENT_S_DN_CN
变量转发给 Tomcat 组件。
编辑 Apache 配置文件。
此文件为 /opt/tarantella/webserver/apache/
。
apache-version
/conf/httpd.conf
启用 JkEnvVar
指令以转发 SSL_CLIENT_S_DN_CN
变量。
搜索现有 JKEnvVar
指令,并为 SSL_CLIENT_S_DN_CN
变量添加一条指令,如下所示:
JkEnvVar SSL_CLIENT_S_DN_CN " " #JkEnvVar HTTP_SAFEWORD_USER " "
使 SSL_CLIENT_S_DN_CN
变量在 /sgd
位置可用。
在文件末尾添加以下 Location
指令:
<Location "/sgd"> SSLOptions +StdEnvVars +ExportCertData </Location>
保存更改。
重新启动 SGD Web 服务器。
默认情况下,第三方验证不允许 SGD 管理员登录到 SGD。这是一项安全措施。要更改此行为,请使用以下命令:
$ tarantella config edit \ --tarantella-config-login-thirdparty-allowadmins 1
第三方验证允许用户不通过 SGD 服务器的验证就可以访问 SGD。SGD 能够信任第三方验证机制,因为客户端应用程序(如 Webtop)和 SGD 服务器共享一个机密信息,即可信用户的用户名和密码。
在标准安装中,只有一个可信用户。但在以下情况下,您可能需要创建更多可信用户:
将 Webtop 重新定位至其他主机上的另一 JavaServer Pages (JSP) 技术容器。
使用 SGD com.tarantella.tta.webservices.client.views
软件包在 SGD 所在的同一台主机或其他主机上开发自己的客户端应用程序。
您担心默认可信用户的安全。
可以在阵列中的每台 SGD 服务器上创建并维护可信用户的“数据库”。该数据库不在 SGD 服务器之间共享。有关如何添加可信用户的详细信息,请参见第 2.6.9.2 节 “如何新建可信用户”。请注意以下事项:
tarantella webserver add_trusted_user 命令是在 SGD 服务器上存储可信用户的唯一受支持方式。
要更改现有可信用户的密码,必须先使用 tarantella webserver delete_trusted_user 命令删除用户,然后再创建该用户。
每次更改可信用户后,必须重新启动 SGD Web 服务器。
通常,客户端应用程序仅使用一个可信用户的凭证访问 SGD 服务。
如果您要使用 SGD Web 服务开发自己的应用程序,ITarantellaExternalAuth
Web 服务是用于第三方验证的服务。此 Web 服务由基本验证加以保护,因此,您只能使用可信用户的凭证来访问它。具体配置如下所示:
https://
URL 在 Axis Web 应用程序的配置文件 SGD-server
/axis/services/document/externalauth/opt/tarantella/webserver/tomcat/
中保护
tomcat-version
/webapps/axis/WEB-INF/web.xml
SGD Web 服务器的 Tomcat 组件配置为支持使用 Tomcat 的 MemoryRealm 和安全散列算法 (Secure Hash Algorithm, SHA) 摘要密码的基本验证。此配置在 Tomcat 配置文件 /opt/tarantella/webserver/tomcat/
中
tomcat-version
/conf/server.xml
可信用户列表存储在 Tomcat 用户配置文件 /opt/tarantella/webserver/tomcat/
中
tomcat-version
/conf/tomcat-users.xml
如果您使用 com.tarantella.tta.webservices.client.views
软件包开发了自己的客户端应用程序,可以使用与 Webtop 相同的方式存储应用程序的可信用户凭证,请参见第 2.6.9.2 节 “如何新建可信用户”。否则,您需要开发自己的凭证存储方法。
对阵列中的每个 SGD 服务器重复以下过程。
在 SGD 主机上,以超级用户 (root) 身份登录。
停止 SGD Web 服务器。
将新的可信用户添加到 SGD 服务器上的可信用户数据库。
为可信用户想出一个用户名和密码。
创建该可信用户。
使用以下命令:
# tarantella webserver add_trusted_user username
出现提示时,键入密码。
检查该用户是否已创建。
使用以下命令:
# tarantella webserver list_trusted_users
检查该可信用户能否正常使用。
转到 https://
URL。出现提示时,以该可信用户身份登录。
SGD-server
/axis/services/document/externalauth
将新的可信用户添加到 Webtop 应用程序的 Web 服务资源文件中。
如果已将 Webtop 重新定位到其他主机,则在远程主机上执行此步骤。
对可信用户的用户名和密码进行编码。
使用以下命令:
# /opt/tarantella/bin/jre/bin/java -classpath \ /opt/tarantella/webserver/tomcat/tomcat-version
/webapps/sgd/ WEB-INF/lib/sgd-webservices.jar\ com.tarantella.tta.webservices.client.views.SgdPasswd \ --encodeusername
:password
从输出复制已编码的用户名和密码。
转至共享资源目录。
# cd /opt/tarantella/webserver/tomcat/tomcat-version
# cd shared/classes/com/tarantella/tta/webservices/client/views
编辑 Resources.properties
文件。
用已编码的用户名和密码替换 sgdaccess=
之后的文本。
保存更改。
启动 SGD Web 服务器。