2011年11月23日水曜日

Tomcat 6(Windows X64版) CLIENT-CERT認証を使ってみる

Tomcatが提供するCLIENT-CERT認証機能を使用して認証してみます。また、JDBCレルムを使用してMySQLからユーザを検索します。
標準のJDBCレルムでは、MySQLのクエリログを参照すると、以下のように、クライアント証明書のSubjectNameでユーザを検索しています。そのため、MySQLにクライアント証明書のSubjectNameでユーザを登録する必要があります。

----------------------------------------------------------------
9 Query SELECT user_password FROM auth_users WHERE user_name ='CN=clientuser.yasuyasu.com, C=jp'
----------------------------------------------------------------

なお、Tomcatにクライアント認証の設定が事前に必要になります。手順は「http://memoyasu.blogspot.com/2011/11/tomcat-6windows-x64ssl.html」を参照してください。

①Webアプリに配備するweb.xmlにおいて、auth-method属性をCLIENT-CERTに設定します。

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Auth</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>CLIENT-CERT</auth-method>
  </login-config>


②MySQLにおいて、ユーザとロール用テーブルに認証するユーザを追加します。
mysql> insert into auth_users (user_name, user_password) values
    -> ('CN=clientuser.yasuyasu.com, C=jp', 'pass');
Query OK, 1 row affected (0.09 sec)
mysql> insert into auth_roles (user_name, role_name) values
    -> ('CN=clientuser.yasuyasu.com, C=jp', 'admin');
Query OK, 1 row affected (0.07 sec)

③Tomcatを再起動します。

④「https://localhost:8443/sampleapp」にアクセスできることを確認します。

0 件のコメント: