Java 認証および承認サービス

Java認証・承認サービスJAAS)は、「ジャズ」と発音され、[ 1 ]標準のプラグ可能認証モジュール(PAM)情報セキュリティフレームワークのJava実装です。[ 2 ] JAASはJava Platform, Standard Edition 1.3 の拡張ライブラリとして導入され、バージョン1.4に統合されました。[ 1 ]

JAASの主な目的は、ユーザー認証における関心を分離し、独立して管理できるようにすることです。従来の認証メカニズムには、コードの発行元と署名者に関する情報が含まれていましたが、JAASはコードの実行者に関する情報も追加します。検証ベクトルを拡張することで、JAASは認証および認可モジュールを必要とするJavaアプリケーションのセキュリティ・アーキテクチャを拡張します。

管理

システム管理者にとって、JAAS は次の 2 種類の構成ファイルで構成されます。

  • *.login.conf: ベンダー提供のログインモジュールを特定のアプリケーションにプラグインする方法を指定します
  • *.policy: どのID(ユーザーまたはプログラム)にどの権限が付与されるかを指定します

たとえば、アプリケーションには、ユーザーを認証するためにさまざまな認証メカニズムを実行する方法を示す 次のlogin.confファイルがある場合があります。

 ペットショップアプリケーション { com.sun.security.auth.module.LdapLoginModule で十分です。 com.foo.SmartcardLoginModule が必要です。 com.sun.security.auth.module.UnixLoginModule が必要です debug=true; } 

アプリケーションインターフェース

アプリケーション開発者にとって、JAAS は次の機能を提供する標準ライブラリです。

セキュリティシステムの統合

セキュリティ システム インテグレーター向けに、JAAS は次のインターフェイスを提供します。

  • アプリケーションにアイデンティティ名前空間を提供する
  • スレッドに資格情報を添付する(件名
  • ログインモジュールを開発するためのものです。モジュールはコールバックを呼び出してユーザーに問い合わせ、応答を確認し、Subjectを生成します。

ログインモジュール

ログインモジュールは主に認可よりも認証に関係しており、JAASの広く使われているコンポーネントを形成しています。[ 3 ] ログインモジュールはjavax.security.auth.spi.LoginModuleインターフェースを実装する必要があり、以下のメソッドを指定します。

注: ASubjectはログインしようとしているユーザーです。

  • 初期化: 通常は、渡されたパラメータを適切なフィールドに格納することによって、ログイン モジュールを初期化するコードですClass
  • login:Objectインターフェースを実装する を 介して提供された認証情報を実際に確認しますjavax.security.auth.Callback(例:データベースとの照合)。このメソッドは、ユーザーにログイン情報とパスワードの入力を求めることも、以前に取得した情報を使用することもできます。ここで重要なのは、無効な認証情報が提供された場合は をjavax.security.auth.login.FailedLoginExceptionスローする必要があることです(falseを返すのではなく、このログインモジュールを無視する必要があることを示すため、認証が成功する可能性がある)。
  • commit: サブジェクトのIDが検証されたため、このメソッドのコードは、認証に成功したサブジェクトに対してPrincipalおよび(ロール)を設定します。Java EEアプリケーションサーバーは、とオブジェクト間の関係が特定の方法で設定されていることを想定していることが多いため、エンタープライズアプリケーションではこのメソッドを慎重に記述する必要があります。認証に失敗した場合(例:ユーザーが誤ったログイン名またはパスワードを指定した場合)、このメソッドは をスローする必要があります。GroupsPrincipalGroupjavax.security.auth.login.FailedLoginException
  • abort: 認証プロセス自体が失敗した場合に呼び出されます。このメソッドがfalseを返す場合、このログインモジュールは無視されます。
  • ログアウト: ログアウト時に実行されるコード (たとえば、Principalを から削除したりSubject、Web セッションを無効にしたりする可能性があります)。

ログイン モジュールは、特定の SSO プロトコル/フレームワーク (例: SAMLOpenIDSPNEGO )を介してシングル サインオン (SSO) を提供したり、ハードウェア セキュリティ トークン (例: USB トークン) の存在を確認したりできます。n 層アプリケーションでは、LoginModulesクライアント側とサーバー側の両方に存在できます。

ログインモジュール ( javax.security.auth.spi.LoginModule)

ログインモジュールは、このインターフェースを実装することで作成されます。認証のための実際のコードが含まれています。様々なメカニズムを用いてユーザー資格情報を認証できます。例えば、データベースからパスワードを取得し、モジュールに渡されたパスワードと比較するといったコードです。

ログインコンテキスト ( javax.security.auth.login.LoginContext)

ログインコンテキストはJAASフレームワークの中核であり、サブジェクトを作成することで認証プロセスを開始します。認証プロセスが進むにつれて、サブジェクトには様々なプリンシパルと資格情報が格納され、その後の処理に使用されます。

主題 (javax.security.auth.Subject

サブジェクトは、認証を要求する単一のユーザー、エンティティ、またはシステム、つまりクライアントを表します。

主要 (java.security.Principal

プリンシパルはサブジェクトの顔を表します。プリンシパルはサブジェクトの特徴やプロパティをカプセル化します。サブジェクトには複数のプリンシパルを含めることができます。

資格

認証情報とは、対象とする主体に関する情報の断片に過ぎません。例えば、口座番号、パスワード、証明書などが挙げられます。認証情報は重要な情報を表すため、適切かつ安全な認証情報を作成するために、追加のインターフェースが役立つ場合がありますjavax.security.auth.Destroyablejavax.security.auth.Refreshable例えば、ユーザーの認証に成功した後、サブジェクトに秘密のID(認証情報の形式)を設定し、そのサブジェクトがそのIDを使用して重要なサービスを実行できるようにするものの、一定期間後に認証情報を削除する必要があるとします。このような場合、Destroyableインターフェースを実装する必要があるかもしれません。Refreshable認証情報の有効期間が限られている場合、インターフェースは役立つかもしれません。

参照

参考文献

  1. ^ a bセオドア・J・シュレイダー;ブルース・A・リッチ。アンソニー J. ナダリン (2000)。Java とインターネット セキュリティ。アイユニバース。 p. 152.ISBN 9780595135004
  2. ^ 「Java 認証および承認サービス (JAAS) リファレンス・ガイド」 . oracle.com . Oracle Corporation . 2012年6月6日時点のオリジナルよりアーカイブ。 2012年5月22日閲覧
  3. ^バタチャルジー、ラーフル (2008 年 4 月)。「JAAS チュートリアル」javaranch.com7 (1)。