Glassfish 3.1.1上に存在するJEE6アプリケーションがあります。このアプリケーションは、多数のRESTリソースを介してリモートクライアントにサービスを提供します。リソースの中には認証が必要なものもあれば、そうでないものもあります。JEE6:カスタムレルム対ResourceFilter - どちらがRESTリソース認証に適していますか?
現在、私は、カスタムレルム/ LoginModuleとして実装されたHTTP基本認証で安全なリソースを保護しています。認証に失敗すると、ログインモジュールはLoginException
を投げ、GlassfishはHTTP 401にマップします。認証が成功すると、リソースはsecurityContext
のuserPrincipal
にアクセスできます。
これは動作しますが、LoginException
を傍受することはできません。私のクライアントはxmlまたはjsonを期待しています。 HTTP 401本体では、Glassfishはtext/htmlを与えます。その他のアプリケーションの例外はすべてExceptionMapper
で傍受できますが、LoginExceptionは例外ではありません。
現時点では、Custom RealmをResourceFilter
に置き換えることを考えています。ここでは、HTTP基本認証を手動で行います。私はここに例外を投げれば、それは傍受され、適切にマッピング/マーシャルされるだろうと期待しています。
私の質問は以下のとおりです。認証のためにResourceFilter
を使用することをお勧め
- ですか?パフォーマンスはどうですか?
- RESTリソースに、認証されたばかりの人(userPrinidentsは誰ですか)を知らせるにはどうすればよいですか?
Btw、私はそれをResourceFilterとInjectable UserProviderとして実装しました。誰かが興味があれば、私はコードを投稿して嬉しいです。私の質問に答えることはできませんが、それは良いアイデアです:) – Hank