連載
» 2010年07月16日 00時00分 公開

企業システムの常識をJBossで身につける(10):内部統制に効く! ID管理・シングルサインオンの常識 (1/4)

企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!

[相原淳, 多田丈晃, 上川伸彦,株式会社ビーブレイクシステムズ]

複数のID/パスワードを覚えておくのは、大変だ!

 企業における日々の業務で、メールや業務アプリケーションなど複数のアプリケーションを同時に利用することは、もはや不可欠です。しかし、アプリケーションの多くは、ユーザーにIDとパスワードを入力させ、ログインを促すものがほとんどです。

 1つのアプリケーションの利用だけならば、IDとパスワードを記憶するのは簡単です。しかし、複数のアプリケーションのIDやパスワードを記憶するのは簡単なことではありません。また、アクセスコントロールにおけるセキュリティの面からも、ログイン方法の異なる複数アプリケーションを利用することは好ましくありません。

 今回紹介する「シングルサインオン」は、複数アプリケーションによるIDパスワードの管理をシンプルにします。また、内部統制を画一化する側面も持ち合わせています。今回は、ID管理とシングルサインオンについて説明していきます。

いまさら聞けない「アイデンティティ管理」とは

 ID(アイデンティティ)管理とは、ユーザーIDや権限といったアプリケーションがユーザーを特定するための重要な情報を、ユーザーやシステム管理者が管理することです。

 ID管理の構成要素は、以下の4つに分類できます(表1参照)。

種類 説明
認証 ユーザーIDやパスワードなどに応じて、アプリケーションがユーザーの正当性を判定する仕組み
シングルサインオン
(SSO)
複数アプリケーションの認証をひとまとめにし、アプリケーションなどにアクセスできる仕組み
アクセスコントロール
(アクセス制御)
ユーザー権限に応じて、アプリケーションの画面や機能などへのアクセスを制御する仕組み
プロビジョニング ユーザーアカウント(ユーザーID)を管理する仕組み(「アカウントプロビジョニング」ともいわれる)
表1 ID管理の構成要素

 今回は認証とシングルサインオンに焦点を当てて説明します。その理由は、以下の3点です。

  • 【認証】
    • シングルサインオンを理解するために、認証の理解が不可欠なため
  • 【シングルサインオン】
    • ID管理を容易にするため
    • 企業のアクセスコントロールにおけるセキュリティの画一化に効果があるため

知ってましたか? 「認証」は2種類あります

 認証を大きく2つに分類すると、【A】1対1認証と、【B】複数間認証に分類できます。

【A】1対1認証

 「1対1認証」とは、アプリケーションによるユーザー判定です。このユーザー判定は、ユーザーが持つID(アカウント)やパスワードなどの認証情報に応じて行われます。ごく一般的なアプリケーションのログイン画面などは、この1対1認証に当てはまります。そのため、非常によく知られた認証方法だといえます。

 また、ID管理における認証は基本的に、こちらを指します。従って、本連載内での「認証」も、こちらを指すと認識しておいてください(こちらの認証方法については、前回の「社内システムのセキュリティとアクセス制御の常識」で説明しています)。

【B】複数間認証

 「複数間認証」とはユーザーやWeb画面が、認証局によって発行される証明書を利用して行う認証の仕組みです。この証明書を用いることで、ユーザーやWeb画面は自らの信頼性を高めることができます。複数間認証について詳しく知りたい方は、記事「PKI再入門 - 第5回 公開鍵との結び付きを証明する第三者認証局」を参照してください。

 以上が2種類の認証についての説明です。認証について、簡単なイメージがわいてきたのではないでしょうか。

Java標準の認証APIパッケージ「JAAS」とは

 次に、もう少し踏み込んで、Javaで認証を実現するための標準APIについて説明します。

 Javaには、認証を実現するための標準APIとして「JAAS」パッケージが用意されています。まずは、JAASの構成要素と簡単な説明を示した表2を参照してください。

種類 説明
JAAS認証 ・IDやパスワードなどを利用して認証を行うことで、ユーザーの正当性を判定
・Javaを実行しているユーザーに正当性があることを確認
JAAS承認 ・アプリケーションによって、リソースへのアクセス要求が許可できるのかを判定
・ユーザーに対するアクセス権の保持を判定
表2 JAASの構成要素

 もう少し具体的に見ていきましょう。

JAAS認証

 JAAS認証では、ユーザーを認証する際、一般的に以下のクラスインターフェイスが利用されます。

クラス/インターフェイス 説明
javax.security.auth.login.LoginContext ・認証を行うための基本的なメソッドが用意されているクラス
・LoginModule(後述)をプラグインすることで、独自の認証機能を持ったアプリケーション開発を補助
・複数のLoginModuleを実装可能
javax.security.auth.spi.LoginModule ・アプリケーションごとに、特定の認証方法を提供するインターフェイス
・アプリケーションごとに別々の認証方法を指定可能
javax.security.auth.callback.CallbackHandler ・アプリケーションが認証作業を行う際、LoginModuleに認証情報を引き渡すインターフェイス
・引き渡す認証情報は、引き渡されるcallbackによって異なる
javax.security.auth.callback.Callback CallbackHandlerに渡すことで、アプリケーション側からの要求に応じた認証情報を設定可能なインターフェイス
表3 JAAS認証で用いられるクラスとインターフェイス

 それでは、表3内のクラスとインターフェイスを利用した、認証作業の処理の流れを見ていきましょう。下記リストを見てください(JAASのリファレンスガイドを参考に作成しました)。

  1. アプリケーションがLoginContextクラスをインスタンス化。また、この際にLoginContextクラスはLoginModuleの読み込む
  2. アプリケーションがLoginContextクラス内のloginメソッドを呼び出す
  3. loginメソッドは、1で読み込まれたLoginModuleを呼び出す。この際、LoginModuleは認証対象(ユーザー)の認証判定作業を行う
  4. LoginContextクラスは、3の認証状態をアプリケーションに返す
  5. アプリケーションは認証に成功した認証対象をLoginContextから取得

JAAS承認

 JAAS承認は現在実行中のコード、およびユーザーにアクセス権を付与したうえで以下のクラスを用いて認証作業を行います。その際、承認を判断するために用いられるのがJavaに標準で備え付けられているPolicyファイルです。

クラス 説明
java.security.Policy ・セキュリティポリシーを表す抽象クラス
・セキュリティポリシーはPolicyファイルを利用して、ソースコードのアクセス権などを設定できる
javax.security.auth.AuthPermission セキュリティを設定するパラメータの名前だけが格納可能な認証クラス
javax.security.auth.PrivateCredentialPermission 非公開の信用証明書情報をユーザーのアクセスから保護するためのクラス
表4 承認で用いられるクラス

 以上が、JAASについての説明です。より詳しく知りたいという方は、JAASのリファレンスガイドを参照してください。次ページ以降では、シングルサインオンについて解説していきます。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。