![]() ![]() ![]() ![]() ![]() ![]() ![]() |
この章では、セキュリティとCORBAサーバー・アプリケーションについて、Security Universityサンプル・アプリケーションを例にして説明します。このSecurityサンプル・アプリケーションで実装するセキュリティ・モデルでは、Universityサンプル・アプリケーションの学生ユーザーはそのアプリケーションへのログイン・プロセスの一部として認証を受ける必要があります。
一般に、CORBAサーバー・アプリケーションはセキュリティにほとんど関係しません。Oracle Tuxedoドメインでのセキュリティはシステム管理者によってUBBCONFIG
ファイルで指定され、ドメインへのログインや認証はクライアント・アプリケーションによって処理されます。Oracle Tuxedoシステムでサポートされているセキュリティ・モデルのいずれにも、Oracle Tuxedoドメインで稼働するサーバー・アプリケーションに関する要件はありません。
しかし、使用するCORBAアプリケーションのセキュリティ・モデルを実装または改善する際に、オブジェクトを追加したり、既存のオブジェクトにオペレーションを追加したりすることになり、そうして追加されたオブジェクトやオペレーションがサーバー・アプリケーションの管理対象である場合もあります。
この章では、Universityサーバー・アプリケーションを拡張して学生という概念を追加する方法を説明します。この拡張はクライアント・アプリケーションに組み込まれて、クライアント・アプリケーションのユーザーの識別、およびログインの手段となります。
クライアント・アプリケーションでOracle Tuxedoドメインへの認証を受ける方法の詳細は、『CORBAクライアント・アプリケーションの作成』を参照してください。Oracle Tuxedoドメインにセキュリティ・モデルを実装する方法の詳細は、『Oracle Tuxedoアプリケーションの設定』を参照してください。
Security Universityサンプル・アプリケーションの設計の要点は、クライアント・アプリケーションのユーザーに対してログオンを求め、ログオンしないと何もできないようにすることです。このため、Securityサンプル・アプリケーションでは、ユーザーの概念を定義する必要があります。
アプリケーションにログオンするために、クライアント・アプリケーションはOracle Tuxedoドメインのセキュリティ・サービスに以下の情報を提供する必要があります(このアプリケーションの学生ユーザーは、ユーザー名とアプリケーション・パスワードのみを提供します)。
Securityサンプル・アプリケーションは、Registrar
オブジェクトにget_student_details()
オペレーションを追加します。このオペレーションによって、クライアント・アプリケーションは、Oracle Tuxedoドメインにログオンした後でUniversityデータベースから学生の情報を取得することができます。
注意: | get_student_details() オペレーションは、Oracle Tuxedoドメインのセキュリティ・モデルを実装することとは無関係です。このオペレーションを追加しても、Securityサンプル・アプリケーションに補足機能を追加するのみです。Securityサンプル・アプリケーションに追加されるセキュリティ・モデルの詳細、およびクライアント・アプリケーションがSecurityサーバー・アプリケーションにログオンする方法の詳細は、『CORBAクライアント・アプリケーションの作成』を参照してください。 |
Securityサンプル・アプリケーションを実装するために、クライアント・アプリケーションではログオンについて学生エンド・ユーザーとのやり取りが追加されます。このやり取りではクライアント・マシン上のローカルなSecurityCurrentオブジェクトを使用してPrincipalAuthenticatorオブジェクトのオペレーションが呼び出され、Oracle Tuxedoドメインにアクセスするためのログイン手順の一部となります。ユーザー認証のプロセスの後、クライアント・アプリケーションはRegistrar
オブジェクトのget_student_details()
オペレーションを呼び出して、各学生ユーザーについての情報を取得します。
Securityサンプル・アプリケーションで使用されるUniversityデータベースは、コース情報に加えて学生の情報も含むように更新されて、図5-1のようになります。
get_student_details()
オペレーションはデータベースで学生情報の部分にアクセスして、クライアントのログオン・オペレーションに必要な学生情報を取得します。図5-2は、Securityサンプル・アプリケーションに関係する主要なオブジェクトを示します。
Securityサンプル・アプリケーションの一般的な使用のシナリオには、以下のようなイベントのシーケンスが含まれることがあります。
Registrar
オブジェクトのget_student_details()
オペレーションを呼び出し、学生IDを渡して、学生についての情報を取得します。Registrar
オブジェクトはデータベースをスキャンして、クライアント・リクエストにある学生IDと一致する学生情報を探します。Registrar
オブジェクトはクライアント・アプリケーションにstruct StudentDetails
を戻します。(学生によって入力されたIDがデータベースにある情報と一致しない場合、Registrar
オブジェクトはクライアント・アプリケーションにCORBA例外を戻します。)Registrar
オブジェクトがクライアント・アプリケーションにStudentDetails
を返した場合、クライアント・アプリケーションは学生ユーザー個人用の許可メッセージを表示します。クライアント・アプリケーションは、ユーザーがUniversityアプリケーションの使用を継続できるように、Oracle Tuxedoシステムにユーザーを記録する方法を提供する必要があります。このためには、クライアント・アプリケーションでユーザーを識別する手段が必要です。Securityサンプル・アプリケーションでは、学生IDで識別を行います。
Universityサーバー・アプリケーションに要求される機能は、クライアント・アプリケーションがユーザー認証プロセスを完了できるように、サーバー・アプリケーションは学生IDに基づいて学生のデータを返すことに尽きます。そのため、Securityサンプル・アプリケーションのOMG IDLは、get_student_details()
オペレーションの定義をRegistrar
オブジェクトに追加します。Universityサーバー・アプリケーションを設計する際の最優先考慮事項は、前述のオペレーション・シナリオに基づいています。つまり、1人の学生が一度に1つのクライアント・アプリケーションと相互通信を行うため、サーバー・アプリケーションはget_student_details()
オペレーションを実装するためのかなり大容量のデータ・バッチを処理する必要がないということです。
get_student_details()
オペレーションのOMG IDL定義は次のとおりです。
struct StudentDetails
{
StudentId student_id;
string name;
CourseDetailsList registered_courses;
};
![]() ![]() ![]() |