web-dev-qa-db-ja.com

人間のためのJAAS

JAASを理解するのに苦労しています。それはすべて、本来あるべきものよりも複雑に思えます(特にSunのチュートリアル)。セキュリティ(認証+許可)をJava Struts + Spring + Hibernateベースのカスタムユーザーリポジトリを使用したアプリケーションに実装する方法に関する簡単なチュートリアルまたは例が必要です。ACEGIを使用して実装できます。

78
Dan
23
Martlark

他のユーザーが上記の非常に便利なリンクを提供しているので、リンクに煩わされることはありません。 JAASでWebアプリケーションの同様の調査を行ったところ、JAASはJava = World。Java SE not Java EE。

JAASは、Webアプリケーションよりもはるかに低いレベルで物事を保護するために構築されたセキュリティフレームワークです。これらの例のいくつかは、JVMレベルで使用可能なコードとリソースであるため、JVMレベルでポリシーファイルを設定するこれらすべての機能です。

ただし、Java EEはJava SEの上に構築されているため、JAASのいくつかのモジュールはJava EE LoginModulesやCallbacksなどのセキュリティ。

Java EEセキュリティに加えて、Springセキュリティ(以前のAcegi)もあります。これは、ネイティブJava EEセキュリティセキュアWebアプリケーションの問題における「レイヤー」。これは個別のセキュリティ実装であり、標準のJava EEセキュリティの上に構築されていませんが、多くの点で同様に動作します。

要約すると、Java SEレベル(クラス、システムリソース)のリソースを保護する場合を除き、共通のクラスとインターフェイスを使用する以外にJAASの実際の使用は見られません。 。Spring Securityまたは単純な古いJava EEセキュリティを使用することに焦点を合わせてください。どちらも多くの一般的なWebアプリケーションセキュリティ問題を解決します。

51
lsiu

javax.securityは、複雑すぎるAPIです。その結果、LoginModuleだけでなく、Authentication&Authorization Managerのような抽象レイヤーを作成する認証および承認API全体の実装者がいます。

手始めに、thisをメモリに印刷するとよいでしょう。

第二に、JAASの最もシンプルなセットアップ&ゴーライブラリはJboss PicketBox です。それは、JBossAuthenticationManagerとJBossAuthorizationManagerを介して認証と承認を行う方法を説明しています... XMLまたは注釈を介して簡単に設定できます。 webappとスタンドアロンアプリケーションの両方の管理に使用できます。

リソースのACLの観点から、リポジトリアクセスを管理するための承認部分が必要な場合、これが確実に求められているものです。

セキュリティの問題は、通常、ニーズに合わせてカスタマイズする必要があるため、最終的に実装する可能性があることです。

LoginModule-userName + Passwordを検証します

CallbackHandlerは次のように使用されますnew LoginContext("Sample", new MyCallbackHandler());

CallbackHandlerは基礎となるLoginModuleに渡されるため、ユーザーはユーザーと通信および対話できます。たとえば、グラフィカルユーザーインターフェイスを介してユーザー名とパスワードの入力を求めます。そのため、ハンドラーの内部でユーザーからユーザー名とパスワードを取得し、それをLoginModuleに渡します。

LoginContext-lc.login()を呼び出すだけです;資格情報を認証します。 LoginContextには認証されたサブジェクトが入力されます。

ただし、Jboss picketboxを使用すると、特別なものが必要な場合を除き、非常に簡単に移動できます。

11
lisak

lsiuの答えは、ここで本当に「わかった」数少ない答えの1つです;)

その答えに加えて、このトピックに関する非常に良いリファレンスは、 JAASに起こったことは何ですか? です。

JASPICが、サーブレットとEJBセキュリティモデルと潜在的にJAASログインモジュールとの間のJava EEのリンクである方法を説明しますが、多くの場合、JAASの役割は比較的単純なユーザー名の役割に制限されますJava EE。

同じ著者から エンタープライズのJAAS があります。これは古い記事ですが、Java SE(JAAS)およびJava EEモデルは、そのやり方を変えました。

全体的にはJAASのいくつかのタイプがJava EE、基本的にPrincipalSubject、およびCallbackHandlerで直接使用されます。後者2つは主にJASPICで使用されます。記事でJASPICを説明しました 実装認証Java EE with JASPIC

8
Arjan Tijms

JAAS自体にはあまり語りかけませんが、Spring Securityの "推奨手順"ガイドリファレンスマニュアル はどちらもSpring Securityの非常に優れたリソースです。セットアップはシンプルに近いものであり、これらを読むこと以上のことをする必要はありません。

2
matt b

純粋なJAASチュートリアルについては、 this をご覧ください。それは古いですが、JAASの基本に役立つはずです。

1
Mark