5

PHPファイルがApache confのSSLVerifyClientで保護されている場合、IDカードなどのスマートカードで認証を強制するようにブラウザーを作成できます。

通常はスマート カード認証を必要とせずに index.php を表示する必要があり、場合によってはこの同じページでユーザー認証を取得する必要があります。

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

authenticationUser() を呼び出すと、ブラウザーがスマート カードの PIN コードを要求するために、何を含める必要がありますか?

4

1 に答える 1

4

あなたは物事を少し混ぜています。
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定義できます。 重要な点は、指定したディレクトリ/ファイルへのアクセスを許可するために、Web サーバー (この場合は Apache) がクライアント証明書を必要とすることです。SSLVerifyClient require
SSLVerifyClient require

結論として、あなたが望むことをする方法はありません。クライアント証明書を必要とする、または必要としないファイル/ディレクトリのみを持つことができます。クライアント証明書を要求するために PHP ファイルの途中で停止する方法はありませんが、必要なファイルにリダイレクトすることはできます。

于 2009-11-30T23:08:29.470 に答える