以通用访问卡 (CAC) 进行认证

通用访问卡是美国的穿制服现役军人、选定预备人员、DoD 文职员工以及合格承包商人员的标准标识。持卡人可以进入大楼和受控空间,并可访问 DoD 计算机网络和系统。CAC 可以用于访问配备了各种智能卡读卡器的计算机和网络。将 CAC 插入读卡器时,设备将要求用户输入 PIN。本任务帮助您设置 AppScan® Enterprise 以允许通过 LDAP 进行 CAC 认证,以便用户无需提供用户名和密码即可登录到 AppScan Enterprise。

开始之前

在安装和配置期间,确保在配置向导的“认证机制”屏幕中选择 LDAP 认证
注:
  1. 如果在应用 AppScan Enterprise v9.0.3.1 iFix1 之前启用了 CAC,那么在 iFix1 安装期间运行配置向导之前将其禁用。然后,可重新启用 CAC 并登录 AppScan Enterprise 以及完成以下任务。
  2. 无需执行任何用户操作即可启用利用 Microsoft™ Internet Explorer 进行的认证。对于 Mozilla Firefox 用户,您的组织可能有针对在浏览器中启用 CAC 的特定指示信息。

过程

  1. 使用包含 CAC 用户的 LDAP 服务器来安装 AppScan Enterprise。
  2. 确保 AppScan Enterprise 的产品管理员同时也是 CAC 用户。
    1. 以管理员身份登录 AppScan Enterprise。
    2. 转至管理 > 用户和组,并从列表选择缺省用户
    3. 编辑用户页面上,从类型列表选择 Administrator。完成用户属性的配置,并单击保存,然后从 AppScan Enterprise 注销。
  3. 将完整认证中心链导入信任库。
    1. 创建密钥库文件或使用现有密钥库。
      注: 要生成密钥库,您可以使用密钥工具。AppScan Enterprise 包含密钥工具,下载位置为 <install-dir>\AppScan Enterprise\Liberty\jre\bin\

      使用以下命令:  keytool -genkey -alias mydomain.com -keyalg RSA -keystore MyKeystore.jks  -keysize 2048 - keypass storePassword

    2. 导入对 CAC 卡上存在的客户机证书签名的完整 CA 证书链。
      注: 您可以使用 Java™ iKeyman 工具来管理您的数字证书。通过 iKeyman,您可以将认证中心 (CA) 根添加到数据库,将证书从一个数据库复制到另一个数据库,从一个 CA 请求并接收数字证书,设置缺省密钥,以及更改密码。iKeyman 实用程序包含在 AppScan Enterprise 中,存储在 <install-dir>\AppScan Enterprise\Liberty\jre\bin\ikeyman.exe 中。您可以从 IBM DeveloperWorks 下载关于 iKeyman 的更多信息:iKeyman 指南
    3. 一次添加一个 CA 证书,并为每个证书创建一个标签。如果您使用 iKeyman,也可以为每个证书创建一个标签。在您添加完整链的所有证书完成后,请关闭 iKeyman 工具。
  4. 修改 web.xml 文件,以将基于表单的认证替换为客户机证书认证。
    注: 在修改 web.xml 文件之前对其进行备份。
    1. 停止 HCL AppScan Enterprise Server 服务。
    2. 在以下位置找到 AppScan Enterprise 实例的 AppScanServerWeb.war 文件:<install-dir>\AppScan Enterprise\Liberty\usr\servers\ase\apps\AppScanServerWeb.war.
    3. AppScanServerWeb.war 文件重命名为 AppScanServerWeb.zip,然后浏览到 WEB-INF 文件夹以检索 web.xml 文件来进行编辑。
    4. 将该文件的以下部分:

      <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/pages/Login.jsp</form-login-page> <form-error-page>/pages/Login.jsp?Retry=True</form-error-page> </form-login-config> </login-config>

      替换为

      <login-config> <auth-method>CLIENT-CERT</auth-method> </login-config>

    5. 保存文件将 AppScanServerWeb.zip 重命名为 AppScanServerWeb.war
  5. 修改 server.xml 文件以强制实施 SSL 协议,设置信任密钥库并设置 LDAP 证书映射。
    1. <install-dir>\AppScan Enterprise\Liberty\usr\servers\<ase instance name>\server.xml 中找到 server.xml 文件。
    2. 确保 <featureManager> 部分包含 <feature>ssl-1.0</feature>
    3. 找到文件的<keystore>部分并添加以下行:<keyStore id="cacTrustKeyStoreID" password="store password" location="cacTrustKeyStore.jks" type='jks' />,其中
      • id 是唯一地标识密钥库的字符串(使用任何字符串)
      • password 是密钥库的密码(此值可以用明文或加密格式存储;使用来自 Liberty 的 securityUtility 可对密码进行加密)
      • location 是密钥库文件的绝对或相对路径(指向 <install-dir>\AppScan Enterprise\Liberty\usr\servers\<ase instance name>\resources\security\ 的相对路径
      • type 是密钥库类型。缺省值为 jks
    4. 找到该文件的 <ssl> 部分,并确保其中包括 <ssl-Protocol="SSL_TLSv2">
    5. 将这些属性添加到 <ssl>
      • trustStoreRef="cacTrustKeyStoreID",其中 cacTrustKeyStoreID 是在文件 <keystore> 部分中配置的密钥库标识。
      • clientAuthenticationSupported="true"
      完成编辑后,该部分可能类似于以下示例:<ssl id="defaultSSLConfig" sslProtocol="SSL_TLSv2" keyStoreRef="defaultKeyStore" trustStoreRef="defaultKeyStore" clientAuthenticationSupported="true" />.
    6. 找到文件的<ldapRegistry>部分,然后添加以下属性:
      • certificateMapMode="CERTIFICATE_FILTER"
      • certificateFilter="uid=${SubjectCN}" .
        注: LDAP 目录中的“uid”必须匹配证书的该属性。修改过滤器的此示例,以便它映射到您的环境。在此示例中,如果证书的“SubjectCN”是“CN=IBM”,那么 LDAP 目录中的用户名 (uid) 也必须是“IBM”。
      此示例显示使用 IBM® Tivoli® Directory Server 的 LDAP 注册表配置。LDAP 用户标识匹配 CAC 卡中存储的证书内的主体 CN:

      <ldapRegistry ldapType="IBM Tivoli Directory Server" host="<<host name>>"  port="<<Port no>>" sslEnabled="false" baseDN="o=IBM,c=US"  certificateMapMode="CERTIFICATE_FILTER" certificateFilter="uid=${SubjectCN}">  <activedFilters userFilter="(objectclass=Person)" userIdMap="*:uid"/ > </ldapRegistry>

  6. 重新启动 HCL AppScan Enterprise Server 服务。
  7. 以管理员身份通过 CAC 认证登录回到 AppScan Enterprise。
  8. 转至管理 > 用户和组,并将缺省用户的许可权更改回到希望角色具有的任何许可权。(通常,可能希望缺省用户成为管理员,但也可能是标准用户)。
  9. 在配置 AppScan Enterprise 之后,除了使用数据库查询之外,没有其他方式来为 CAC 用户创建管理员帐户。如果未完成步骤 2,遵循以下步骤:
    1. 通过 CAC 卡登录 AppScan Enterprise,并检查许可证以查看您是否是管理员。
    2. 如果您不是管理员,对 AppScan Enterprise SQL Server 数据库运行以下查询:select *from UserInfo.
    3. 找到查询结果中的 CAC 用户而非其 UserId。
    4. 然后运行此查询:Update UserInfo set UserTypeId=5, LicenseType=3, EffectiveType=32768,其中 UserId 是您的 CAC 管理用户的标识。
    5. 从 AppScan Enterprise 注销,然后再次登录。您现在应是管理员。

结果

使用通用访问卡的用户无需提供用户名和密码即可登录到 AppScan Enterprise。