しかし、これは「コンテナ管理認証」のパラダイム全体に違反していませんか?おそらくセキュリティホールを挿入していますか?
はい、多かれ少なかれ。アプリケーションが認証メカニズムをまったく認識せず、アイデンティティ ストア (ユーザー データが実際に保存される場所) が、アプリケーションに独自のユーザー サインアップ/サインアップがあるユース ケースを実際に考慮しない、コンテナー管理セキュリティの概念登録機能。
このアイデアは、外部から入手したアプリケーション (たとえば、Sonar または JIRA インスタンスなど) を既存の企業構造に統合することをより意図しているようです。ユーザーは、LDAP などの中央システムを使用して管理者によって作成されるか、場合によってはアプリケーション サーバーの管理 UI を使用して作成されます。
残念ながら、一般的なパブリック Web アプリケーションの多くは、このような種類ではありません。これらはスタンドアロン アプリであり (既存の社内のエンタープライズ インフラストラクチャとは統合されません)、独自のユーザーを効果的に管理します。
古典的な概念はそこには適合しません。そのため、Java EE Security EG は現在、これに対処する最善の方法を模索しています。
それまでの間、基本的に3つの「解決策」があります。
- DB 接続の詳細を 2 回 (サーバー レベルで 1 回、アプリで 1 回) 定義するだけです。あなたは実際にすでにこれを行っていたようです。
- アプリケーションに認証モジュールを含めるオプションを持つ、コンテナ提供の認証 API である JASPIC を使用します。アプリケーションも使用しているのとまったく同じデータソースと可能性のある JPA エンティティマネージャーなどを使用できます。
- 完全に「ユーザー空間」に実装されている、DeltaSpike Security や Shiro などの外部セキュリティ フレームワークを使用してセキュリティを実行します。
Java EE の観点からは、本当に理想的なものはありません。1 つ目は定義が重複しており、実際には原則に多少違反しています。2 つ目はそれ自体は問題ありませんが、JASPIC はやや低レベルであり、2 つ目は機能豊富なソリューションですが、既存の Java EE セキュリティとうまく統合されていません。