安装和升级 > 高级部署注意事项 > 验证 > 在 Windchill 中配置替代身份验证 > 基于表单的身份验证
  
基于表单的身份验证
在配置 Windchill 以进行基于表单的身份验证之前,必须先选择一个基于表单的身份验证解决方案,并对其进行所需修改以便与 Windchill 配合使用。基于表单的身份验证解决方案多种多样,从 SiteMinder 到内置于嵌入式 servlet 引擎中的基于表单的身份验证支持,不一而足。虽然个别配置详细信息是特定于解决方案的,但此处并未对此进行说明,了解以下部分中包含的 Windchill 详细信息非常重要。关于设置基于表单的验证解决方案的详细信息,请参阅随解决方案提供的文档。
* 
对随 Windchill 应用程序一起交付的文件所做的任何更改都应被视为自定义文件,可由 PTC 在任何维护安装过程中进行覆盖。请确保按 Managing Customizations 所述备份自定义文件。
由于注销功能在基于表单的身份验证中可用,而在默认的基本身份验证中并不可用,于是在最终用户文档中未详细说明,因此,用户可能不知道其是否有权注销。如果推出的 Windchill 环境启用了基于表单的身份验证,请提醒用户如何注销。如果更改“注销”菜单选项 (将在本节的后面部分加以介绍) 的默认注销行为,请确保同时向用户传达新行为。
所需的登录页面表示
在基于表单的身份验证解决方案的设置过程中,您必须建立一个登录页面以生成登录表单的简单 XHTML 表示,如此可供非浏览器客户端 (例如,Java 应用程序) 收集登录数据并将其发布到由 wt.auth.form.submitUrl 特性指定的 URL。由于非浏览器客户端在处理基于表单的身份验证 (即最终适用于浏览器客户端的应用程序约定) 时需要协助,因此,此页面是必需的。
PTC 将 login.jsp 文件提供为非浏览器客户端所使用的必需登录页面表示。该文件位于安装 Windchill 的代码库/登录子目录中。由于 login.jsp 文件用于表示登录表单所需的凭据数据字段,因此,您可以将该文件编辑为包含相应的显示标签和表单字段名称。
* 
PTC 建议您不要将 login.jsp 文件用作为基于表单的身份验证解决方案配置的实际登录表单。
Windchill URL 注意事项
配置基于表单的身份验证解决方案时,对某些 Windchill URL 的访问必须由该解决方案加以约束,而对其他 URL 的访问则不必约束。
相对 Windchill Web 应用程序 URL 存储在 <Windchill>/apacheConf/config/authResAdditions.xml 文件中,其中 <Windchill>Windchill 安装目录。
每个 URL 各自存储在一个资源标记中。例如,以下资源标记包含在该文件中:
<resource>pdmlink/jsp</resource>
<resource>servlet/WindchillAuthGW</resource>
<resource type="protocolAuth">protocolAuth</resource>
<resource type="anonymous">servlet/WindchillGW</resource>
对于基于表单的身份验证,可按如下方式对 URL 进行分组:
资源标记中包含类型属性的 URL,例如:
<resource type="protocolAuth">protocolAuth</resource>
<resource type="anonymous">servlet/WindchillGW</resource>
资源标记中不含类型属性的 URL,例如:
<resource>pdmlink/jsp</resource>
<resource>servlet/WindchillAuthGW</resource>
资源标记中包含指定类型的的 URL 不得应用基于表单的身份验证约束;而不含指定类型的 URL 则必须应用基于表单的身份验证约束。
审阅文件中相对 URL 的完整列表,并确保只有资源标记中所列出的不含类型属性的 URL 才受到基于表单的身份验证解决方案的约束。
常规注解
以下注解可帮助您确定使用哪个基于表单的身份验证解决方案,以及帮助您执行所需的更改:
如果客户端不是 Java 应用程序或浏览器页面,则不具有用于登录的插件机制,因此,不支持基于表单的身份验证,除非通过收集简单输入并将表单数据发布到指定的 URL 来影响登录。如果无法收集简单输入并将表单数据发布到 URL 以使用所选的基于表单的身份验证解决方案进行登录,则可能需要为非浏览器 Java 客户端生成基于表单的自定义登录处理程序。
有关创建基于表单的自定义登录处理程序的信息,请参阅 com.ptc.fba.FormBasedLogin 上提供的 Javadoc。
在实施基于表单的身份验证时,应了解超时的处理方式。默认的 servlet 会话超时 30 分钟在 <Windchill>/codebase/WEB-INF/web.xml 中设置。此外,您还可以提供在基于表单的身份验证解决方案中设置的身份验证超时。无论何时使用基于表单的身份验证解决方案,都将使用身份验证超时,而不依赖于 servlet 会话的超时。
使用简单 Tomcat 基于文件的身份验证时,会话超时和身份验证超时相同,并根据 J2EE 标准在 <Windchill>/codebase/WEB-INF/web.xml 中进行设置。使用另一个基于文件的身份验证解决方案时,设置中可以包含空闲超时以及用于限制会话最大持续时间的硬超时。
基于表单的身份验证不适用于所有服务器访问。该身份验证适用于交互式、有人值守客户端。
一旦意识到存在基于表单的身份验证超时 (在身份验证解决方案中设置) 且凭据数据 (如动态生成的 SecurID 令牌) 得到使用后,显然不能对非交互式、无人值守客户端进行基于表单的身份验证。对于此类客户端,访问时应使用匿名可信任客户端接入,或使用基于协议的身份验证:
对于匿名可信任客户端访问 (也称为可信任主机身份验证),可以在 Windchill URL 中的 WindchillWebAppName/ 之后插入 trustedAuth/
您可以代表不同用户对非交互式身份验证和运行中的任务使用可信任身份验证,而无需身份验证凭据。有关详细信息,请参阅 wt.httgw.filter.TrustedAuthFilter 上提供的 Javadoc。
对于基于协议的访问,可以在 Windchill URL 中的 WindchillWebAppName/ 之后插入 protocolAuth/
Windchill Java 命令行实用程序通常被视为交互式、有人值守客户端。如果这一规则不适用于给定的实用程序,则可以调整此类客户端的 RMI 身份验证行为。
有关详细信息,请参阅 wt.httpgw.HTTPLogin 上提供的 Javadoc。
Windchill 配置步骤
基于表单的身份验证解决方案可供使用后,请完成以下配置步骤:
1. 确定是否需要对 Windchill Visualization Services、Windchill Desktop Integration 等 Windchill 程序进行配置更改。
请参阅“Windchill 程序更改”部分。
2. 确定是否需要更新涉及 Info*Engine 的当前自定义以支持基于表单的身份验证解决方案。
请参阅“Info*Engine 自定义更改”部分。
3. 确定是否需要在任何第三方产品中进行更改以支持基于表单的身份验证。
请参阅“第三方产品更改”部分。
4. 更新 Windchill 环境中的 Web 服务器以移除约束。
请参阅“更新 Web 服务器配置以移除约束”部分。
5. 配置 Windchill 特性以使用基于表单的身份验证解决方案:
wt.properties 中的 wt.auth.form.enabled 特性设置为 true。此设置可启用基于表单的身份验证,并将 Windchill“快速链接”菜单更新为包含“注销”菜单选项。
wt.properties 中的 wt.auth.form.submitUrl 特性设置为客户端在基于表单的身份验证中提交凭据时所使用的 URL。
wt.properties 中的 wt.logout.url 特性设置为要与基于表单的身份验证解决方案配合使用以对当前身份验证会话执行注销的 URL。
默认 URL 为 Windchill 基本 URL。使用默认 URL 时,假定注销过程为终止 servlet 会话,并将注销事件发送至 Windchill 审计服务。根据所实施的基于表单的身份验证解决方案,您可能需要执行不同的注销操作,随后可能需要使用不同的 URL。
有关其他详细信息,请参阅“Windchill 特性更改”部分。
Windchill 程序更改
基于表单的身份验证无法在协议级别以透明方式处理,因此,某些用于访问 Windchill 的客户端必须专设为支持基于表单的身份验证。例如,在使用基于表单的身份验证时,可能需要更改诸如可视化服务或 Windchill Desktop Integration 之类的 Windchill 项目群。
有关针对基于表单的身份验证进行可视化更改的信息,请参阅针对 WVS 使用基于表单的身份验证时的注意事项
有关进行 Windchill Desktop Integration 更改的详细信息,请参阅“高级自定义”下的 DTI Customization Framework
Info*Engine 自定义更改
自定义 JSP、SOAP 服务和 Info*Engine 任务可与基于表单的身份验证解决方案配合使用。
使用基于表单的身份验证解决方案时,客户端用于访问 IE servlet、RPC 或 SimpleTaskDispatcher servlet 的 URL 必须包含 /protocolAuth URL 前缀。
有关其他信息,请参阅 Interacting with Info*Engine
第三方产品更改
如果您使用的是受支持的第三方产品,则必须确定这些产品是否需要进行一些更改,以便支持基于表单的身份验证。
例如,Cognos 不使用 Windchill servlet 引擎和身份验证代码;因此,由内置 Windchill servlet 引擎驱动的基于表单的身份验证不能用作 Windchill 与 Cognos 之间的统一单一登录。在常规配置中,Cognos 通过闩锁直接锁定到 REMOTE_USER 上。如果未设置 REMOTE_USER,则 Cognos 需要特殊配置才能使用基于表单的身份验证。
更新 Web 服务器配置以移除约束
从 Web 服务器配置中移除除匿名和基于协议的身份验证约束之外的所有其他身份验证约束。
如果为 Windchill 配置的是基于 Apache 的 Web 服务器,请针对其中的 Windchill Web 应用程序,完成以下步骤来移除除了用于仅协议身份验证和声明匿名访问之外的所有其他身份验证约束:
1. 打开 Windchill shell 并导航至 <Windchill>/<httpserver_home> 目录,其中 <Windchill>Windchill 安装目录,<httpserver_home> 是 Web 服务器安装目录。
2. 执行以下 Ant 脚本:
ant -f webAppConfig.xml regenWebAppConf -DappName=<WindchillWebAppName> -DprotocolAuthOnly=true
其中,<WindchillWebAppName> 是在 wt.properties 文件的 wt.webapp.name 特性中所定义 Windchill Web 应用程序的名称 (例如,Windchill)。
Windchill 特性更改
用来启用基于表单的身份验证解决方案的 wt.properties 特性是 wt.auth.form.enabled。
默认情况下,会禁用基于表单的身份验证解决方案。要启用该解决方案,请使用 xconfmanager 实用程序将该特性设置为 true。例如,在 Windchill shell 中输入:
xconfmanager -s wt.auth.form.enabled=true -t wt.properties -p
通过启用基于表单的身份验证解决方案,也会启用 Windchill 页面右上角 Windchill“快速链接”菜单中“注销”菜单选项的显示。
如果用户选择“注销”菜单选项,则默认行为是 Windchill servlet 会话结束,并在 Windchill 审计日志中捕获注销事件。在注销时所进行的用户启动的活动将继续,直到这些活动尝试访问 servlet 会话。例如,如果用户在搜索启动后但在搜索完成前注销,则在尝试显示结果时,搜索会出现错误。如果用户在启动检入操作后但在显示检入确认之前单击“注销”,则检入即会完成,但在无法显示检入确认时会记录一个错误。
默认情况下,如果 servlet 会话与身份验证会话相同,则用户将丢失与该会话关联的任何状态数据,且不再登录。用户使用“注销”菜单选项注销后,页面将执行 Windchill 基本 URL,由于用户不再登录,因此 URL 将为用户提供一个登录表单,可供用户重新登录。
您可以通过在基于表单的身份验证解决方案中选择不同的配置设置,并在 wt.properties 中的 wt.logout.url 特性中设置其他 URL 来更改此默认的注销行为。如果基于表单的身份验证解决方案并不基于 servlet 会话 (且未因终止 servlet 会话而终止其身份验证会话),则在 wt.logout.url 特性中设置的 URL 会通过基于表单的身份验证解决方案来注销当前身份验证会话。