JAASを理解するのに苦労しています。それはすべて、本来あるべきよりも複雑に思えます(特にSunのチュートリアル)。Struts + Spring + Hibernateとカスタムユーザーリポジトリに基づくJavaアプリケーションでセキュリティ(認証+承認)を実装する方法についての簡単なチュートリアルまたは例が必要です。ACEGIを使用して実装できます。
JAASを理解するのに苦労しています。それはすべて、本来あるべきよりも複雑に思えます(特にSunのチュートリアル)。Struts + Spring + Hibernateとカスタムユーザーリポジトリに基づくJavaアプリケーションでセキュリティ(認証+承認)を実装する方法についての簡単なチュートリアルまたは例が必要です。ACEGIを使用して実装できます。
回答:
JAASを理解するために使用したリンクの一部を次に示します。
http://www.owasp.org/index.php/JAAS_Tomcat_Login_Module
http://www.javaworld.com/jw-09-2002/jw-0913-jaas.html
http://jaasbook.wordpress.com/
また、ApacheTomcatレルム構成のハウツーもご覧ください。
他のユーザーは上記のいくつかの非常に便利なリンクを提供しているので、私はリンクを気にするつもりはありません。私はJAASでWebアプリケーションについて同様の調査を行い、JAASがJavaWorldのWebアプリケーションとは異なる「レイヤー」でセキュリティに取り組むフレームワークであることにようやく気付くまで「マインドロードブロッキング」に遭遇しました。これは、JavaEEではなくJavaSEのセキュリティ問題に取り組むために構築されています。
JAASは、Webアプリケーションよりもはるかに低いレベルで物事を保護するために構築されたセキュリティフレームワークです。これらの例としては、JVMレベルで利用可能なコードとリソースがあります。したがって、これらすべての機能により、JVMレベルでポリシーファイルを設定できます。
ただし、JavaEEはJavaSEの上に構築されているため、JAASのいくつかのモジュールがLoginModulesやCallbacksなどのJavaEEセキュリティで再利用されました。
Java EEセキュリティに加えて、Springセキュリティ(以前はAcegiと呼ばれていました)もあります。これは、ネイティブJava EEセキュリティと同様に、Webアプリケーションのセキュリティ保護の問題ではるかに高い「層」に取り組みます。これは別個のセキュリティ実装であり、多くの点で同様に動作しますが、標準のJavaEEセキュリティの上に構築されていません。
要約すると、Java SEレベルのリソース(クラス、システムリソース)を保護しようとしているのでない限り、共通のクラスとインターフェイスを使用する以外にJAASを実際に使用することはありません。SpringSecurityまたはプレーンな古いJavaEEセキュリティの使用に焦点を合わせてください。どちらも多くの一般的なWebアプリケーションセキュリティの問題を解決します。
javax.securityは、非常に複雑なAPIです。その結果、LoginModulesだけでなく、Authentication&Authorization Managerのように、上に抽象化レイヤーを作成する認証および承認API全体の実装者がいます。
手始めに、これをあなたの記憶に印刷するのは良いことです。
次に、JAASの最も単純なセットアップと実行のライブラリはJbossPicketBoxです。これは、JBossAuthenticationManagerおよびJBossAuthorizationManagerを介して認証と承認を行う方法を示しています... XMLまたは注釈を介して簡単に構成できます。Webアプリケーションとスタンドアロンアプリケーションの両方の管理に使用できます。
リソースのACLの観点から、リポジトリアクセスを管理するための承認部分が必要な場合、これは確実に探しているものです。
セキュリティの問題は、通常、ニーズに合わせてカスタマイズする必要があるため、次のものを実装することになる可能性があることです。
LoginModule -userName +パスワードを確認します
CallbackHandlerはこのように使用されますnew LoginContext("Sample", new MyCallbackHandler());
CallbackHandlerは、基盤となるLoginModuleに渡されるため、ユーザーと通信したり対話したりできます。たとえば、グラフィカルユーザーインターフェイスを介してユーザー名とパスワードの入力を求められます。したがって、ハンドラー内でユーザーからユーザー名とパスワードを取得し、LoginModuleに渡されます。
LoginContext-次に、lc.login();を呼び出すだけです。資格情報を認証します。LoginContextには、認証されたサブジェクトが入力されます。
ただし、Jboss picketboxを使用すると、特定のものが必要でない限り、非常に簡単に移動できます。
lsiuの答えは、ここで本当に「理解する」数少ない答えの1つです;)
その答えに加えて、このトピックに関する本当に良い参考資料は、JAASに何が起こったのかということです。。
JASPICがサーブレットとEJBセキュリティモデルと潜在的にJAASログインモジュールとの間のJavaEEのリンクである方法を説明しますが、多くの場合、JAASの役割はJavaEEの比較的単純なユーザー名と役割プロバイダーの役割に縮小されます。
同じ著者からのJAASin the Enterpriseは古い記事ですが、Java SE(JAAS)モデルとJavaEEモデルがそのように分岐した理由に関する多くの歴史的背景を提供しています。
全体として、JAASのいくつかのタイプは、Java EEで直接使用されます。基本的Principal
にSubject
は、、、CallbackHandler
です。後者の2つは、主にJASPICによって使用されます。JASPICについては、JASPICを使用したJavaEEでのコンテナ認証の実装の記事で説明しました。
JAAS自体についてはあまり話せませんが、Spring Securityに関するこの「推奨手順」ガイドとリファレンスマニュアルは、どちらもSpring Securityに関する非常に優れたリソースです。セットアップが単純に近い場合は、実際に行う必要はありません。これらを読む以上のことをしてください。