【回避方法あり】Payara 4.1.1.164には認証に関するバグがありました

環境

Payara Web ML 4.1.1.164 確認していませんが、Full Profileでも同じバグがある可能性があります。 また、4.1.1.163以前のバージョンには、このバグはありません。

現象

JDBCリソースやレルムの設定を正しく行っても、アプリケーションでフォーム認証ができません。 具体的には、ログイン画面から正しいID・パスワードを入力してログインしても、403エラーになります。

原因

「デフォルトロールマッピングプリンシパル」の有効化が認識されないようです。 これは、管理コンソール・asadminコマンド・domain.xml直接書き換え、いずれを行なってもダメでした。

いつ修正されるのか

来年第1四半期にリリース予定のPayara 4.1.1.171で修正される予定です。

回避策

アプリケーションのWEB-INFフォルダにglassfish-web.xmlというファイルを作成し、下記のように記述してください。 こうすると、うまく「デフォルトロールマッピングプリンシパル」の有効化が認識されるようになります。

<glassfish-web-app>
    <property name="default-role-mapping" value="true">
        <description>Enable default group to role mapping</description>
    </property>
</glassfish-web-app>

もっと詳しいことは

GitHubにIssueを書きましたので、ご覧ください。

403 error occurs when Form-Authentication succeeded PAYARA-1244 · Issue #1213 · payara/Payara · GitHub

サンプルコードはこちら。

GitHub - MasatoshiTada/form-authentication-sample