|
この章では、セキュリティと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;
};
|