8.8. 设置外部 USB 智能卡读取器

8.8.1. 安装
8.8.2. 卸载
8.8.3. 已知问题和限制

Sun Ray Software 提供 CCID IFD 处理程序 V1.3.10 以支持与 Sun Ray Client 连接的符合 CCID 的外部 USB 智能卡读取器。CCID IFD 处理程序 V1.3.10 是用于 PC/SC-lite API 的接口设备处理程序 (Interface Device Handler, IFD) 的 Sun Ray 实现。该 CCID IFD 处理程序在与 Sun Ray Software 提供的智能卡服务结合使用时,会启用符合 PC/SC 标准的应用程序与中间件,以使用 Sun Ray Client 上的外部 USB 智能卡读取器。

8.8.1. 安装

要安装 CCID IFD 处理程序,请按以下说明进行操作。

注意

要在 Oracle Solaris Trusted Extensions 环境中安装 CCID IFD 处理程序,请从 ADMIN_LOW(全局区域)以 root 用户身份进行安装。

  1. 下载并解压缩 CCID IFD 处理程序。

    注意

    Sun Ray Software 5.3 发行版本中不提供 CCID IFD 处理程序。但您可以从 5.1.1 Media Pack(5.1.1 介质包)下载 PC/SC-lite 1.3 组件,其中包含 CCID IFD 处理程序 v1.3.10 分发版。只需安装 CCID IFD 处理程序。Sun Ray Software 5.3 已安装了 PC/SC-lite。

  2. 在 Sun Ray 服务器上成为超级用户。

  3. 安装 CCID IFD 处理程序:

    # svcadm disable pcscd
    # /usr/sbin/pkgadd -d . SUNWusb-scrdr
    # svcadm enable pcscd

8.8.2. 卸载

要删除 CCID IFD 处理程序,请按以下说明进行操作。

注意

要从 Oracle Solaris Trusted Extensions 环境中卸载 CCID IFD 处理程序,请从 ADMIN_LOW(全局区域)以 root 用户身份进行卸载。

  1. 在 Sun Ray 服务器上成为超级用户。

  2. 卸载 CCID IFD 处理程序:

    # svcadm disable pcscd
    # /usr/sbin/pkgrm SUNWusb-scrdr
    # svcadm enable pcscd

8.8.3. 已知问题和限制

8.8.3.1. 会话移动性、对 Sun Ray Client 进行重置或关开机循环会冻结应用程序

使用外部智能卡读取器时,本发行版本不支持会话移动性、对 Sun Ray Client 进行重置或关开机循环,这些可能会导致应用程序冻结或丢失外部读取器的跟踪信息。

8.8.3.2. 客户端 PC/SC-lite USB 枚举延迟

目前,外部 USB 读取器对于 PC/SC-lite 客户端应用程序变为可见之前有几秒的延迟。只要出现以下情况,此延迟就会发生:为用户会话启动 PC/SC-lite 实例时以及 USB 总线需要重新枚举时。具体而言,外部 USB 读取器无法对应用程序立即可见的枚举延迟会在以下情况中发生:

  • PC/SC-lite 实例首次启动时。也就是应用程序首次尝试从某个给定会话内访问 PC/SC-lite 时。

  • PC/SC-lite 实例由于非活动的闲置期而自我终止后自动重新启动时。该情况与首个情况类似。

  • 会话移动性事件发生,导致在系统重新枚举目标 Sun Ray Client 上的外部 USB 读取器的同时产生读取器可见性延迟时。目前针对 Sun Ray Client 上的外部 USB 读取器的 CCID IFD 处理程序不支持会话移动性。

  • 在 Sun Ray 会话中对 Sun Ray Client 进行重置或关开机循环时。

8.8.3.3. 枚举延迟会对某些应用程序造成问题

某些应用程序(例如 Windows 连接器上的 Windows Smart Card 登录程序)并不适应与 USB 热插拔模式相关联的枚举延迟。此类应用程序看不到其首次扫描 PC/SC-lite 读取器列表后显示的读取器。也就是说,后来显示的读取器可能由于上述任一情形而被应用程序忽略。

有时应用程序会使用查找到的首个读取器。在 Sun Ray Client 上,该读取器一定是内部读取器,除非该读取器已由以下命令禁用:

# utdevadm -d -s internal_smartcard_reader

附加解决方案的目的在于确保 USB 读取器列表在应用程序扫描前就对其可见。解决该问题的一种方法是防止 PC/SC-lite 实例在经过预先指定的空闲期后超时。您可以通过编辑 /etc/smartcard/pcscd-SunRay.conf 文件,将 INSTANCE_TIMEOUT 参数更改为 -1,来禁用实例超时设置。系统提供的默认值为 600 秒(10 分钟)。

当通过更改 INSTANCE_TIMEOUT 禁用非活动的超时设置时,PC/SC-lite 实例仍然存在,直到用户的会话终止。这意味着进程表中可能存在很多使用系统资源的 PC/SC-lite 进程。

由于系统中用户会话数不断增长,对于这可能带来多大的影响,我们目前没有相关数据(也就是说,我们关于其扩展情况的数据不足)。很多情况下,这可能根本不算问题,唯一的影响就是进程表中会存在更多非活动的进程,因而显得更为杂乱。