目次 前 次 PDF


セキュリティとCORBAサーバー・アプリケーション

セキュリティとCORBAサーバー・アプリケーション
この章では、セキュリティとCORBAサーバー・アプリケーションについて、Security Universityサンプル・アプリケーションを例にして説明します。このSecurityサンプル・アプリケーションで実装するセキュリティ・モデルでは、Universityサンプル・アプリケーションの学生ユーザーはそのアプリケーションへのログイン・プロセスの一部として認証を受ける必要があります。
このトピックには次の項が含まれます:
セキュリティとCORBAサーバー・アプリケーションの概要
一般に、CORBAサーバー・アプリケーションはセキュリティとはほとんど関係ありません。Oracle Tuxedoドメインでのセキュリティはシステム管理者によってUBBCONFIGファイルで指定され、ドメインへのログオンや認証はクライアント・アプリケーションによって処理されます。Oracle Tuxedoシステムでサポートされているセキュリティ・モデルのいずれにも、Oracle Tuxedoドメインで稼働するサーバー・アプリケーションに関する要件はありません。
しかし、使用するCORBAアプリケーションのセキュリティ・モデルを実装または改善する際に、オブジェクトを追加したり、既存のオブジェクトに操作を追加したりすることになり、そうして追加されたオブジェクトや操作がサーバー・アプリケーションの管理対象である場合もあります。
この章では、Universityサーバー・アプリケーションを拡張して学生という概念を追加する方法を説明します。この拡張はクライアント・アプリケーションに組み込まれて、クライアント・アプリケーションのユーザーの識別、およびログインの手段となります。
クライアント・アプリケーションでOracle Tuxedoドメインへの認証を受ける方法の詳細は、『CORBAクライアント・アプリケーションの作成』を参照してください。Oracle Tuxedoドメインにセキュリティ・モデルを実装する方法の詳細は、『Oracle Tuxedoアプリケーションの設定』を参照してください。
Universityサーバー・アプリケーションの設計上の考慮事項
Security Universityサンプル・アプリケーションの設計の要点は、クライアント・アプリケーションのユーザーに対してログオンを求め、ログオンしないと何もできないようにすることです。したがって、Securityサンプル・アプリケーションでは、ユーザーの概念を定義する必要があります。
アプリケーションにログオンするために、クライアント・アプリケーションはOracle Tuxedoドメインのセキュリティ・サービスに以下の情報を提供する必要があります(このアプリケーションの学生ユーザーは、ユーザー名とアプリケーション・パスワードのみを提供します)。
Securityサンプル・アプリケーションは、Registrarオブジェクトにget_student_details()操作を追加します。この操作によって、クライアント・アプリケーションは、Oracle Tuxedoドメインにログオンした後でUniversityデータベースから学生の情報を取得することができます。
注意:
get_student_details()操作は、Oracle Tuxedoドメインのセキュリティ・モデルを実装することとは無関係です。この操作を追加しても、Securityサンプル・アプリケーションに補足機能を追加するのみです。Securityサンプル・アプリケーションに追加されるセキュリティ・モデルの詳細、およびクライアント・アプリケーションがSecurityサーバー・アプリケーションにログオンする方法の詳細は、『CORBAクライアント・アプリケーションの作成』を参照してください。
ここでは、次の内容について説明します。
Security Universityサンプル・アプリケーションのしくみ
Securityサンプル・アプリケーションを実装するために、クライアント・アプリケーションではログオンについて学生エンド・ユーザーとのやり取りが追加されます。このやり取りではクライアント・マシン上のローカルなSecurityCurrentオブジェクトを使用してPrincipalAuthenticatorオブジェクトの操作が呼び出され、Oracle Tuxedoドメインにアクセスするためのログイン手順の一部となります。ユーザー認証のプロセスの後、クライアント・アプリケーションはRegistrarオブジェクトのget_student_details()操作を呼び出して、各学生ユーザーについての情報を取得します。
Securityサンプル・アプリケーションで使用されるUniversityデータベースは、コース情報に加えて学生の情報も含むように更新されて、図5-1のようになります。
図5-1 Universityデータベース
 
get_student_details()操作はデータベースで学生情報の部分にアクセスして、クライアントのログオン操作に必要な学生情報を取得します。図5-2に、Securityサンプル・アプリケーションに関連する主要なオブジェクトを示します。
図5-2 Securityサンプル・アプリケーションに関連する主要なオブジェクト
Securityサンプル・アプリケーションの一般的な使用のシナリオには、以下のようなイベントのシーケンスが含まれることがあります。
1.
2.
3.
4.
5.
6.
クライアント・アプリケーションはRegistrarオブジェクトのget_student_details()操作を呼び出し、学生IDを渡して、学生についての情報を取得します。
7.
Registrarオブジェクトはデータベースをスキャンして、クライアント・リクエストにある学生IDと一致する学生情報を探します。
8.
クライアント・アプリケーションのリクエストで指定されている学生IDと、データベースにある学生情報の間に一致があれば、Registrarオブジェクトはクライアント・アプリケーションにstruct StudentDetailsを返します。(学生によって入力されたIDがデータベースにある情報と一致しない場合、Registrarオブジェクトはクライアント・アプリケーションにCORBA例外を戻します。)
9.
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;
};
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved