http://support.microsoft.com/kb/892424
Active Directory で「対話型ログオンにはスマート カードが必要」が設定されている場合、ランダムなパスワードが生成されます。スマート カードを使用して Web アプリケーションから LDAP 経由でユーザーを認証するにはどうすればよいですか?
ユーザーが誰であるかを知るにはどうすればよいですか? 証明書にアクセスする方法はありますか? セッションから取得できますか?
http://support.microsoft.com/kb/892424
Active Directory で「対話型ログオンにはスマート カードが必要」が設定されている場合、ランダムなパスワードが生成されます。スマート カードを使用して Web アプリケーションから LDAP 経由でユーザーを認証するにはどうすればよいですか?
ユーザーが誰であるかを知るにはどうすればよいですか? 証明書にアクセスする方法はありますか? セッションから取得できますか?
これには、HTTPSとSSLの相互認証を使用する必要があります。これは、クライアントのスマートカードに少なくとも企業のCA署名付き証明書がすでに保存されているためです。
サーバー認証だけでなく相互SSL認証を使用する場合、クライアント証明書は、クライアントによるサーバーの証明書だけでなく、サーバーによっても検証されます(これは、HTTPS対応のeコマースサイトなどでより一般的な設定です)。そして、あなたはまだボーナスとして暗号化された接続を取得します。
たとえば、Tomcat6.0SSL構成のHOW-TOを参照してください。重要な点は、trust-storeのCA証明書とclientAuth属性をtrueに設定することです。
login auth-methodは、それぞれのWebアプリケーションのweb.xmlでCLIENT-CERTにも指定する必要があります。
...
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Foo * Bar * Realm</realm-name>
</login-config>
...
クライアント証明書のSubjectDN属性は、ユーザーを識別するために使用されます。LDAP(またはActiveDirectory)は、ユーザーがグループに属しているかどうかを確認するなどして、認証に引き続き使用できます。
初めてすべてを設定するのは難しい場合があります。すべての概念に精通するために、次のアプローチをお勧めします。