Tuxedo CORBA サーバ アプリケーションの開発方法

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

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

この章では、セキュリティと CORBA サーバ アプリケーションについて、Security University サンプル アプリケーションを例にして説明します。この Security サンプル アプリケーションで実装するセキュリティ モデルでは、University サンプル アプリケーションの学生ユーザはそのアプリケーションへのログイン プロセスの一部として認証を受ける必要があります。

ここでは、以下の内容について説明します。

 


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

一般に、CORBA サーバ アプリケーションはセキュリティにほとんど関係しません。Oracle Tuxedo ドメインでのセキュリティはシステム管理者によって UBBCONFIG ファイルで指定され、ドメインへのログインや認証はクライアント アプリケーションによって処理されます。Oracle Tuxedo システムでサポートされているセキュリティ モデルのいずれにも、Oracle Tuxedo ドメインで稼働するサーバ アプリケーションに関する要件はありません。

しかし、使用する CORBA アプリケーションのセキュリティ モデルを実装または改善する際に、オブジェクトを追加したり、既存のオブジェクトにオペレーションを追加したりすることになり、そうして追加されたオブジェクトやオペレーションがサーバ アプリケーションの管理対象である場合もあります。

この章では、University サーバ アプリケーションを拡張して学生という概念を追加する方法を説明します。この拡張はクライアント アプリケーションに組み込まれて、クライアント アプリケーションのユーザの識別、およびログインの手段となります。

クライアント アプリケーションで Oracle Tuxedo ドメインへの認証を受ける方法の詳細については、『Tuxedo CORBA クライアント アプリケーションの開発方法』を参照してください。Oracle Tuxedo ドメインにセキュリティ モデルを実装する方法の詳細については、『Oracle Tuxedo アプリケーションの設定』を参照してください。

 


University サーバ アプリケーションの設計上の考慮事項

Securty University サンプル アプリケーションの設計の要点は、クライアント アプリケーションのユーザに対してログオンを求め、ログオンしないと何もできないようにすることです。このため、Security サンプル アプリケーションでは、ユーザの概念を定義する必要があります。

アプリケーションにログオンするために、クライアント アプリケーションは Oracle Tuxedo ドメインのセキュリティ サービスに以下の情報を提供する必要があります (このアプリケーションの学生ユーザは、ユーザ名とアプリケーション パスワードのみを提供します)。

Security サンプル アプリケーションは、Registrar オブジェクトに get_student_details() オペレーションを追加します。このオペレーションによって、クライアント アプリケーションは、Oracle Tuxedo ドメインにログオンした後で University データベースから学生の情報を取得することができます。

注意: get_student_details() オペレーションは、Oracle Tuxedo ドメインのセキュリティ モデルを実装することとは無関係です。このオペレーションを追加しても、Security サンプル アプリケーションに補足機能を追加するのみです。Security サンプル アプリケーションに追加されるセキュリティ モデルの詳細、およびクライアント アプリケーションが Security サーバ アプリケーションにログオンする方法の詳細については、『Tuxedo CORBA クライアント アプリケーションの開発方法』を参照してください。

ここでは、次の内容について説明します。

Security University サンプル アプリケーションのしくみ

Security サンプル アプリケーションを実装するために、クライアント アプリケーションではログオンについて学生エンド ユーザとのやり取りが追加されます。このやり取りではクライアント マシン上のローカルな SecurityCurrent オブジェクトを使用して PrincipalAuthenticator オブジェクトのオペレーションが呼び出され、Oracle Tuxedo ドメインにアクセスするためのログイン手順の一部となります。ユーザ認証のプロセスの後、クライアント アプリケーションは Registrar オブジェクトの get_student_details() を呼び出して、学生ユーザについての情報を取得します。

Security サンプル アプリケーションで使用される University データベースは、コース情報に加えて学生の情報も含むように更新されて、次の図のようになります。

get_student_details() オペレーションはデータベースで学生情報の部分にアクセスして、クライアントのログオン オペレーションに必要な学生情報を取得します。次の図は、Security サンプル アプリケーションに関係する主要なオブジェクトを示します。

Security サンプル アプリケーションの一般的な使用のシナリオには、以下のようなイベントのシーケンスが含まれることがあります。

  1. クライアント アプリケーションは、SecurityCurrent オブジェクトの参照を Bootstrap オブジェクトから取得します。
  2. クライアント アプリケーションは SecurityCurrent オブジェクトを呼び出して、Oracle Tuxedo ドメインで要求されるセキュリティのレベルを判別します。
  3. クライアント アプリケーションは学生ユーザについて学生 ID および必要なパスワードを問い合わせます。
  4. クライアント アプリケーションは、学生についての情報を認証サービスから取得して、学生の認証を行います。
  5. 認証の処理が正常に終了したら、クライアント アプリケーションは Oracle Tuxedo ドメインにログオンします。
  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 で識別を行います。

Universtity サーバ アプリケーションに必要な処理は、クライアント アプリケーションがユーザ認証プロセスを完了できるように、学生 ID に基づいて学生のデータを返すことのみです。このため、Security サンプル アプリケーションの OMG IDL によって、Registrar オブジェクトに get_student_details() オペレーションの定義が追加されています。University サーバ アプリケーションの設計上の主な考慮事項は、既に説明したとおりオペレーション上のシナリオに基づいています。つまり、1 名の学生が一度に 1 つのクライアント アプリケーションとやり取りできるようにすることです。このため、サーバ アプリケーションは get_student_details() オペレーションの実装で大量のデータ処理を考慮する必要がありません。

get_student_details() オペレーションの OMG IDL 定義は次のとおりです。

struct StudentDetails
{
StudentId student_id;
string name;
CourseDetailsList registered_courses;
};

  ページの先頭       前  次