2009-11-30 19 views
5

スマートカードなどの認証を強制するブラウザを作ることができます。例えば、apache confのSSLVerifyClientでphpファイルを保護している場合はIDカードです。スマートカード認証を要求するPHPアプリケーションの作成方法

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

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

それはスマートカードのPINコードを依頼するブラウザを起こし呼び出すようにするauthenticateUser()は何が含まれている必要がありますか?

答えて

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

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

+0

ok。 Webサーバーが認証を行った後、PHPでクライアント証明書/認証のデータを確認したり、読み取ったりすることは可能ですか? – Massimo

関連する問題