tomcat8.5 と postgresql9.2 でのユーザー認証の際のパスワードの暗号化
tomcat8.5とpostgresql9.2とを連携してユーザー認証機能を作成しようとしていますが,
DBに保存するパスワードの文字列が平文(plain text)の場合は動作の確認ができますが,
暗号化するとうまく動作しません.
以下,簡単にtomcatの設定と,DBの内容をまとめます.
$CATALINA_HOME/conf/context.xml
<Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="postgres" password="postgres"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/testdb" />
$CATALINA_HOME/conf/server.xml
<Realm className="org.apache.catalina.realm.DataSourceRealm"
debug="99"
dataSourceName="jdbc/postgres" userTable="usr_auth" userNameCol="usr"
userCredCol="pass" userRoleTable="auth_role" roleNameCol="usr_role"
localDataSource="true">
<CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="MD5" />
</Realm>
webapp/WEB-INF/web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>Auth Interface</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>app-usr</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>User Auth</realm-name>
</login-config>
DBには該当するusr_authテーブルとauth_roleテーブルを以下のように作成しています.
usr_auth
列 | 型 | 修飾語
------+------------------------+----------
usr | character varying(40) | not null
pass | character varying(200) | not null
インデックス:
"usr_auth2_pkey" PRIMARY KEY, btree (usr)
auth_role
列 | 型 | 修飾語
----------+-----------------------+----------
usr | character varying(40) | not null
usr_role | character varying(30) |
インデックス:
"auth_role_pkey" PRIMARY KEY, btree (usr)
上記のような設定で,DBには
$CATALINA_HOME/bin/digest.sh -a MD5 hogehoge
hogehoge:1957d2b05cb99....
で出力された暗号列を
insert into usr_auth values('aaa','1957d2b05cb99....');
のように登録し,ロールについても対応のレコードを登録してあります.
以上のような設定ではtomcatの起動,認証ダイアログの表示は確認できましたが,
認証を通過できませんでした.
上記のserver.xml
の<CredentialHandler>
の行をコメントアウトし,
insert into usr_auth values('bbb','hogehoge');
のように登録した場合,ログインすることができました.
DBの登録方法に問題があるのか,tomcatの設定に問題があるのか,
わかる方がいらっしゃいましたら,宜しくお願いします.