Glassfish で JDBCRealm を認証手段として使用する場合、ユーザーのグループ/ロールがロードされていないため、ユーザーをログインできません。これは、多くの場合、アプリケーションの 403 Not Authorized メッセージによってのみ認識されます。
core.security の FINEST ログを有効にすると、次のように表示されます。
FINE: Login module initialized: class com.sun.enterprise.security.auth.login.JDBCLoginModule
FINEST: JDBC login succeeded for: user@gmail.com groups:[]
FINE: JAAS login complete.
ご覧のとおり、グループは空です。
テーブル:
CREATE TABLE users (
ID int(11) NOT NULL,
EMAIL varchar(255) NOT NULL,
PASSWORD longtext NOT NULL,
SALT longtext NOT NULL,
...
PRIMARY KEY (ID),
UNIQUE KEY EMAIL (EMAIL),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
CREATE TABLE `users_groups` (
`ID` int(11) NOT NULL,
`groupname` varchar(255) NOT NULL,
KEY `FK_USERS_GROUPS_ID` (`ID`),
CONSTRAINT `FK_USERS_GROUPS_ID` FOREIGN KEY (`ID`) REFERENCES `users` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
Glassfish レルム: