人間のためのJAAS
-
06-07-2019 - |
質問
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/
Apache Tomcatレルムの設定方法もご覧ください:
他のヒント
他のユーザーが上記の非常に便利なリンクを提供しているので、私はリンクに煩わされるつもりはありません。 JAASでWebアプリケーションの同様の調査を行ったところ、「マインドロードブロッキング」に遭遇しました。 JAASが別の「レイヤー」でセキュリティに取り組むフレームワークであることをようやく理解するまで次に、Java WorldのWebアプリケーション。 Java EEではなくJava SEのセキュリティ問題に取り組むために構築されています。
JAASは、Webアプリケーションよりもはるかに低いレベルで物事を保護するために構築されたセキュリティフレームワークです。これらの例のいくつかは、JVMレベルで利用可能なコードとリソースです。したがって、JVMレベルでポリシーファイルを設定するこれらすべての機能です。
ただし、Java EEはJava SEの上に構築されているため、JAASのいくつかのモジュールがLoginModulesやCallbacksなどのJava EEセキュリティで再利用されました。
Java EEセキュリティに加えて、Springセキュリティ(以前のAcegi)もあります。これは、ネイティブJava EEセキュリティと同様に、より高度な「レイヤー」に取り組みます。セキュアWebアプリケーションの問題。別のセキュリティ実装であり、標準のJava EEセキュリティの上に構築されていませんが、多くの点で同様に動作します。
要約すると、Java SEレベルのリソース(クラス、システムリソース)を保護する場合を除き、共通のクラスとインターフェースを使用する以外のJAASの実際の使用は見当たりません。 Spring Securityまたは単純な古いJava EEセキュリティの使用に焦点を合わせてください。どちらも多くの一般的なWebアプリケーションセキュリティの問題を解決します。
javax.securityは、複雑すぎるAPIです。その結果、LoginModuleだけでなく、Authentication&のような抽象化レイヤーを作成する認証および承認API全体の実装者が存在します。承認マネージャー。
手始めに、 これ をあなたの記憶に。
次に、最もシンプルなセットアップ& JAASのgoライブラリはJboss PicketBox です。それは、JBossAuthenticationManagerとJBossAuthorizationManagerを介して認証と承認を行う方法を説明しています... XMLまたは注釈を介して簡単に設定できます。これを使用して、webappとスタンドアロンアプリケーションの両方を管理できます。
リソースのACLの観点から、リポジトリへのアクセスを管理するための承認部分が必要な場合、これがあなたが確実に探しているものです。
セキュリティの問題は、通常、ニーズに合わせてカスタマイズする必要があるため、最終的に実装することになる可能性があることです:
LoginModule -userName + Passwordを検証します
CallbackHandler は次のように使用されます new LoginContext(" Sample&quot ;, new MyCallbackHandler());
CallbackHandlerは基礎となるLoginModulesに渡されるため、ユーザーはユーザーと通信および対話できます-たとえば、グラフィカルユーザーインターフェイスを介してユーザー名とパスワードの入力を求めます。そのため、ハンドラー内でユーザーからユーザー名とパスワードを取得し、LoginModuleに渡されます。
LoginContext -lc.login()を呼び出すだけです。資格情報を認証します。 LoginContextには認証されたサブジェクトが入力されます。
ただし、Jboss picketboxを使用すると、特別なものが必要な場合を除き、非常に簡単に移動できます。
lsiuの答えは、ここで実際に「取得」する数少ない答えの1つです。 ;)
その答えに加えて、このトピックに関する非常に良いリファレンスは、 JAASに何が起こったのですか。
JASPICがJava EEでサーブレットとEJBセキュリティモデル間のリンクであり、潜在的にJAASログインモジュールである方法について説明しますが、多くの場合、JAASの役割はJava EEの比較的単純なユーザー名と役割プロバイダーの役割に削減されます。
同じ著者からのエンタープライズのJAAS は古い記事ですが、 Java SE(JAAS)モデルとJava EEモデルがそのように分岐した理由に関する多くの歴史的背景を提供します。
Java EEでは、基本的に Principal
、 Subject
、および CallbackHandler
のように、JAASの全体ではあるがいくつかのタイプが直接使用されます。後者の2つは主にJASPICによって使用されます。 JASPICについては、記事 Java EEでのコンテナー認証の実装で説明しています。ジャスピック。
JAAS自体にはあまり話せませんが、これは 「推奨手順」 Spring Securityのガイドとリファレンスマニュアルは両方ともSpring Securityの非常に優れたリソース-セットアップがシンプルに近いものであれば、これらを読むこと以上のことをする必要はありません。
純粋なJAASチュートリアルについては、こちら。それは古いですが、JAASの基本に役立つはずです。