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 件のコメント:
コメントを投稿