人間のためのJAAS


83

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


素晴らしい質問です。正当なドキュメンテーションの失敗に対する素晴らしいタイトル。
グイドアンセルミ2013年

JAASに関する最高のQ&A。私はそれから始めようとするのに本当に苦労してきました。
cristiandley 2015

@mattb、できれば補遺を作りたいと思います。私はと信じている私の答えはあなたの質問を理解するのに役立つかもしれません。概念的に言っています。
pss1suporte 2017

回答:


23

3
jaasbookのリンクは死んでいます。現在、jaasbook.wordpress.comに
Eric B.

@Martlark、可能であれば補遺を作成したいと思います。私の答えはあなたの答えを理解するのに役立つかもしれないとは信じてます。概念的に言っています。
pss1suporte 2017

51

他のユーザーは上記のいくつかの非常に便利なリンクを提供しているので、私はリンクを気にするつもりはありません。私はJAASでWebアプリケーションについて同様の調査を行い、JAASがJavaWorldのWebアプリケーションとは異なる「レイヤー」でセキュリティに取り組むフレームワークであることにようやく気付くまで「マインドロードブロッキング」に遭遇しました。これは、JavaEEではなくJavaSEのセキュリティ問題に取り組むために構築されています。

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

ただし、JavaEEはJ​​avaSEの上に構築されているため、JAASのいくつかのモジュールがLoginModulesやCallbacksなどのJavaEEセキュリティで再利用されました。

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

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


2
Java EE 6チュートリアルは、基本的なセキュリティの概念を理解していることを前提としているため、JAASの概要が少しでも問題になることはありません。
jacktrades

JAASの最高の説明!
David Hofmann 2016年

@isiu、できれば補遺を作りたいと思います。私の答えはあなたの答えを理解するのに役立つかもしれないとは信じてます。概念的に言っています。
pss1suporte 2017

11

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を使用すると、特定のものが必要でない限り、非常に簡単に移動できます。


8

lsiuの答えは、ここで本当に「理解する」数少ない答えの1つです;)

その答えに加えて、このトピックに関する本当に良い参考資料は、JAASに何が起こったのかということです。

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

同じ著者からのJAASin the Enterpriseは古い記事ですが、Java SE(JAAS)モデルとJavaEEモデルがそのように分岐した理由に関する多くの歴史的背景を提供しています。

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


2

JAAS自体についてはあまり話せませんが、Spring Securityに関するこの「推奨手順」ガイドリファレンスマニュアルは、どちらもSpring Securityに関する非常に優れたリソースです。セットアップが単純に近い場合は、実際に行う必要はありません。これらを読む以上のことをしてください。


「推奨手順」ガイドはここに移動しました:static.springsource.org/spring-security/site/start-here.html
aliopi 2011

1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.