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 は次の機能を提供する標準ライブラリです。
- アイデンティティの表現 (プリンシパル) と資格情報のセット (サブジェクト)
- アプリケーションのコールバックを呼び出して、ユーザー名やパスワードなどをユーザーに尋ねるログインサービス。新しいSubjectを返します。
- サブジェクトに管理者によって権限が付与されているかどうかをテストするサービス。
セキュリティシステムの統合
セキュリティ システム インテグレーター向けに、JAAS は次のインターフェイスを提供します。
- アプリケーションにアイデンティティ名前空間を提供する
- スレッドに資格情報を添付する (件名)
- ログインモジュールを開発するためのものです。モジュールはコールバックを呼び出してユーザーに問い合わせ、応答を確認し、Subject を生成します。
ログインモジュール
ログイン モジュールは、承認ではなく認証を主に扱い、JAAS の広く使用されているコンポーネントを形成します。ログイン モジュールは、javax.security.auth.spi.LoginModule次のメソッドを指定するインターフェイスを実装する必要があります。
注: A はSubjectログインしようとしているユーザーです。
- 初期化: ログイン モジュールを初期化するコード。通常は、渡されたパラメータを適切なフィールドに格納します
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 プロトコル/フレームワーク (例: SAML、OpenID、SPNEGO )を介してシングル サインオン (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.Destroyable。javax.security.auth.Refreshableユーザーの認証が成功した後、主体が重要なサービスを実行できる秘密の ID (資格情報の形式) を主体に入力しますが、一定時間が経過すると資格情報を削除する必要があるとします。その場合、インターフェイスを実装する必要がありますDestroyable。Refreshable資格情報の有効期間が限られている場合は、が役立つ場合があります。
参照
参考文献
外部リンク
- JAAS チュートリアル
- jGuard : JAAS に基づいてスタンドアロンまたは Web アプリケーションを保護できるオープン ソース プロジェクト。2008-12-02 にWayback Machineでアーカイブされました。
- Musser, John; Feuer, Paul (2002 年 9 月 23 日)。「All that JAAS」。JavaWorld。2020年 7 月 20 日閲覧。
- SPNEGO ライブラリ - 認証と承認を簡素化するために JAAS フレームワークを利用するオープンソースの GNU LGPL プロジェクト
