php - 如何使php应用程序需要智能卡身份验证

标签 php smartcard

当 php 文件在 apache conf 中使用 SSLVerifyClient 保护时,我可以让浏览器强制使用智能卡(例如 ID 卡)进行身份验证。

现在我通常需要在不需要智能卡身份验证的情况下显示 index.php,有时同一页面必须经过用户身份验证。

doStuff();
if ($needed==1)
  authenticateUser();
doMoreStuff();

authenticateUser() 必须包含哪些内容才能调用它导致浏览器询问智能卡 pin 码?

最佳答案

你有点混合了东西。
authenticateUser(); 在服务器上运行,而身份验证发生在客户端。您不能在运行用于客户端身份验证的 PHP 脚本的过程中停止,然后继续运行 PHP 脚本。

作为您问题的解决方案,这可能适用于您的情况:

if(authenticationNeeded)
{
   // redirect to a page that requires authentication that does what index was supposed to do.
   redirect('index_ssl.php');
}

通过使用.htaccess,您可以只为某些目录/文件定义SSLVerifyClient require
关键点是:您的 Web 服务器(在本例中为 Apache)需要客户端证书才能授予对您指定 SSLVerifyClient require 的任何目录/文件的访问权限。

总而言之,没有办法如愿以偿。您只能拥有需要或不需要客户端证书的文件/目录。无法在 PHP 文件中间停下来要求客户端证书,但您可以重定向到需要客户端证书的文件。

关于php - 如何使php应用程序需要智能卡身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1822119/

相关文章:

php - 从根文件夹 laravel 之外的文件夹访问文件

php - Smarty 删除 foreach 循环中的尾随逗号

c# - 第一次尝试无法访问智能卡,其他均成功

通过 PKCS#11 使用智能卡的 Android SSL

php - 如何preg_match所有数字而不是url编码的逗号

javascript - Stripe 安全问题

php - 从 PHP CURL 使用 FTP

windows - 如何将低级命令(非 APDU)发送到 Windows 10(移动)上的智能卡?

c# - 智能卡读卡器,无法读取某些卡

smartcard - 尝试选择 Applet 时收到 6E00