代码之家  ›  专栏  ›  技术社区  ›  Margus Pala

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

  •  5
  • Margus Pala  · 技术社区  · 16 年前

    在ApacheConf中,当PHP文件受sslverifyclient保护时,我可以让浏览器强制使用智能卡(如ID卡)进行身份验证。

    现在我需要显示index.php,通常不需要智能卡认证,有时这个页面必须经过用户认证。

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

    authenticateuser()必须包含什么,以便调用它会导致浏览器询问智能卡PIN码?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Marius Burz    16 年前

    你把这些东西混在一起了。
    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要求 .

    总之,没有办法做你想做的事。您只能拥有需要或不需要客户端证书的文件/目录。t要想获得客户机证书,不能在PHP文件中间停止,但可以重定向到需要证书的文件。