9.2. 使用 SSSD 对智能卡验证进行故障排除

按照以下流程,使用智能卡对具有 SSSD 的验证进行故障排除。

先决条件

  • 已安装并配置了用于智能卡的 IdM 服务器和客户端。
  • 已安装 sssd-tools 软件包。
  • 您可以检测智能卡读取器并显示智能卡的内容。请参阅在系统上测试智能卡访问

步骤

  1. 使用 su 验证您可以使用智能卡进行验证:

    $ su - idmuser1 -c ‘su - idmuser1 -c whoami’
    PIN for MyEID (sctest):
    idmuser1

    如果没有提示输入智能卡 PIN,且返回一个密码提示或者返回授权错误,请检查 SSSD 日志。有关登录 SSSD 的信息,请参阅 在 IdM 中对具有 SSSD 的身份验证进行故障排除。以下是身份验证失败的示例:

    $ su - idmuser1 -c ‘su - idmuser1 -c whoami’
    PIN for MyEID (sctest):
    su: Authentication failure

    如果 SSSD 日志指明了 krb5_child 的问题,类似于以下内容,则可能对您的 CA 证书有问题。要排除与证书相关的问题,请参阅 验证 IdM Kerberos KDC 可以使用 Pkinit 以及 CA 证书正确位于

    [Pre-authentication failed: Failed to verify own certificate (depth 0): unable to get local issuer certificate: could not load the shared library]

    如果 SSSD 日志表示来自 p11_childkrb5_child 的超时,您可能需要提高 SSSD 超时,并尝试使用智能卡再次进行身份验证。有关如何增加超时的详情,请参阅增加 SSSD 超时

  2. 验证您的 GDM 智能卡验证配置是否正确。应返回 PAM 验证的成功消息,如下所示:

    # sssctl user-checks -s gdm-smartcard "idmuser1" -a auth
    user: idmuser1
    action: auth
    service: gdm-smartcard
    
    SSSD nss user lookup result:
     - user name: idmuser1
     - user id: 603200210
     - group id: 603200210
     - gecos: idm user1
     - home directory: /home/idmuser1
     - shell: /bin/sh
    
    SSSD InfoPipe user lookup result:
     - name: idmuser1
     - uidNumber: 603200210
     - gidNumber: 603200210
     - gecos: idm user1
     - homeDirectory: /home/idmuser1
     - loginShell: /bin/sh
    
    testing pam_authenticate
    
    PIN for MyEID (sctest)
    pam_authenticate for user [idmuser1]: Success
    
    PAM Environment:
     - PKCS11_LOGIN_TOKEN_NAME=MyEID (sctest)
     - KRB5CCNAME=KCM:

    如果身份验证错误(类似于以下内容)被返回,请检查 SSSD 日志尝试并确定导致这个问题的原因。有关登录 SSSD 的信息,请参阅 在 IdM 中对具有 SSSD 的身份验证进行故障排除

    pam_authenticate for user [idmuser1]: Authentication failure
    
    PAM Environment:
     - no env -

    如果 PAM 验证仍失败,请清除您的缓存并再次运行命令。

    # sssctl cache-remove
    SSSD must not be running. Stop SSSD now? (yes/no) [yes] yes
    Creating backup of local data…
    Removing cache files…
    SSSD needs to be running. Start SSSD now? (yes/no) [yes] yes