Tuxedo CORBA アプリケーションのセキュリティ機能

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

セキュリティ モジュール

ここでは、CORBA セキュリティ モデルで使用する以下のモジュールの Object Management Group (OMG) インタフェース定義言語 (IDL) の定義を説明します。

注意 : Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB は Tuxedo 8.1 で非推奨になり、今後はサポートされなくなりました。すべての Oracle Tuxedo CORBA Java クライアントおよび Oracle Tuxedo CORBA Java クライアント ORB のテキスト リファレンスとコード サンプルは、サード パーティ製の Java ORB ライブラリを実装または実行する際の参考や、プログラマの参照用としてのみ使用してください。
注意 : サード パーティの CORBA Java ORB のテクニカル サポートは、各ベンダによって提供されます。Oracle Tuxedo では、サード パーティの CORBA Java ORB に関する技術的なサポートやマニュアルは提供していません。

CORBA モジュール

OMG では、Current 擬似オブジェクトをサポートするために、CORBA::Current インタフェースを CORBA モジュールに追加しています。この変更によって、CORBA モジュールは、Security Replaceability および Security Level 2 をサポートできるようになりました。

コード リスト 13-1 に、CORBA::Current インタフェースの OMG IDL 文を示します。

注意 : この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 15-230 ページから、OMG の許可を得て転載しています。
コード リスト 13-1 CORBA::Current インタフェースの OMG IDL 文
module CORBA {
// CORBA に対する拡張
interface Current {
};
};

TimeBase モジュール

基本的な Time Service、Universal Time オブジェクト、および Time Interval オブジェクトに適用されるすべてのデータ構造体は、TimeBase モジュールで定義されます。これによって、ほかのサービスは、インタフェース定義なしでもこのデータ構造を使用できるようになります。インタフェース定義およびそれに関連する enum と例外は、TimeBase モジュールにカプセル化されます。

コード リスト 13-2 に、TimeBase モジュールの OMG IDL 文を示します。

注意 : この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 14-5 ページから、OMG の許可を得て転載しています。
コード リスト 13-2 TimeBase モジュールの OMG IDL 文
// Time Service から
module TimeBase {
// ulonglong データ型の仮の定義
// これは、すべてのクライアント ORB による型の拡張の適用を保留
struct ulonglong {
unsigned long low;
unsigned long high;
};
typedef ulonglong TimeT;
typedef short TdfT;
struct UtcT {
TimeT time; // 8 オクテット
unsigned long inacclo; // 4 オクテット
unsigned short inacchi; // 2 オクテット
TdfT tdf; // 2 オクテット
// 合計 16 オクテット
};
};

表 13-1 に、TimeBase モジュールのデータ型を定義します。

注意 : この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 14-6 ページから、OMG の許可を得て転載しています。

表 13-1 TimeBase モジュールのデータ型の定義
データ型
定義
Time ulonglong

OMG IDL には現在、符号なし 64 ビット整数を表すネイティブなデータ型はありません。その RFP に対する技術の適用は、符号なし 64 ビット整数を表すネイティブなデータ型を OMG IDL で定義するための手段を提供します。

その技術の適用を保留すると、この構造体を使用して符号なし 64 ビット整数を表し、ネイティブなデータ型が使用可能になったときに、すべてのプラットフォームでこの宣言と相互運用できないことを理解することができます。この定義は一時的なもので、ネイティブな符号なし 64 ビット整数型が OMG IDL で使用できるようになると削除されます。

Time TimeT
TimeT は、64 ビットの単一の時間値を表し、基準時間から経過した 100 ナノ秒数を保持します。絶対時間では、基準時間は 15 October 1582 00:00 です。
Time TdfT
TdfT は、16 ビットの short 型で、グリニッジ子午線を基準にした置換の秒数の形式で時間の置換係数を保持します。子午線の東は正数、西は負数で表されます。
Time UtcT
UtcT は、サービス全般で使用する時間値の構造体です。UtcT 構造体が保持されている場合、相対時間または絶対時間は、履歴によって決まります。その状態情報を保持するオブジェクト内に明示的なフラグはありません。inacclo フィールドと inacchi フィールドは、48 ビットに圧縮された InaccuracyT 型の値を保持します。tdf フィールドは、タイム ゾーン情報を保持します。実装は、Universal Time オブジェクト (UTO) が作成されるときは常に、ローカル タイム ゾーンの時間の置換係数をこのフィールドに配置します。
この構造体の内容は、非透過的になるように設計されています。正しくマーシャルするために、フィールドのタイプを識別する必要があります。

Security モジュール

Security モジュールは、ほかのセキュリティ モジュールで共通のセキュリティ データ型に対する OMG IDL を定義します。このメソッドは、TimeBase モジュールによって異なり、セキュリティ対応の ORB で使用できなければなりません。

コード リスト 13-3 に、Security モジュールでサポートされているデータ型を示します。

注意 : この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 15-193 ~ 15-195 ページから、OMG の許可を得て転載しています。
コード リスト 13-3 Security モジュールの OMG IDL 文
module Security {
typedef sequence<octet> Opaque;

// 標準データ型の拡張可能なファミリ
struct ExtensibleFamily {
unsigned short family_definer;
unsigned short family;
};
       //セキュリティ属性
typedef unsigned long SecurityAttributeType;

// ID 属性; ファミリ = 0
const SecurityAttributeType AuditId = 1;
const SecurityAttributeType AccountingId = 2;
const SecurityAttributeType NonRepudiationId = 3;

// 特権属性; ファミリ = 1
const SecurityAttributeType Public = 1;
const SecurityAttributeType AccessId = 2;
const SecurityAttributeType PrimaryGroupId = 3;
const SecurityAttributeType GroupId = 4;
const SecurityAttributeType Role = 5;
const SecurityAttributeType AttributeSet = 6;
const SecurityAttributeType Clearance = 7;
const SecurityAttributeType Capability = 8;

struct AttributeType {
ExtensibleFamily attribute_family;
SecurityAttributeType attribute_type;
};

typedef sequence <AttributeType> AttributeTypeLists;
struct SecAttribute {
AttributeType attribute_type;
Opaque defining_authority;
Opaque value;
// この属性の値は
// 型の認識を基にしてのみ解釈可能
};

typedef sequence<SecAttribute> AttributeList;

// Authentication はステータスを返す
enum AuthenticationStatus {
SecAuthSuccess,
SecAuthFailure,
SecAuthContinue,
SecAuthExpired
};
       // 認証方式
typedef unsigned long   AuthenticationMethod;
        enum CredentialType {
SecInvocationCredentials;
SecOwnCredentials;
SecNRCredentials
       // TimeBase から選択
typedef TimeBase::UtcT   UtcT;
};

表 13-2 に、Security モジュールのデータ型を示します。

表 13-2 Security モジュールのデータ型定義
データ型
定義
sequence<octet>
表現がセキュリティ サービス実装にのみ認識されるデータ。

Security Level 1 モジュール

ここでは、レベル 1 のセキュリティ機能のみを使用するクライアント アプリケーション オブジェクトで使用可能なインタフェースを定義します。このモジュールは、CORBA モジュール、Security モジュール、TimeBase モジュールによって異なります。Current インタフェースは、ORB によって実装されます。

コード リスト 13-4 に、Security Level 1 モジュールの OMG IDL 文を示します。

注意 : この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 15-198 ページから、OMG の許可を得て転載しています。
コード リスト 13-4 Security Level 1 モジュールの OMG IDL 文
module SecurityLevel1 {
interface Current : CORBA::Current { // PIDL
Security::AttributeList get_attributes(
in Security::AttributeTypeList attributes
);
};
};

Security Level 2 モジュール

ここでは、レベル 2 のセキュリティ機能を使用するクライアント アプリケーション オブジェクトで使用可能な追加インタフェースを定義します。このモジュールは、CORBA モジュールおよび Security モジュールによって異なります。

コード リスト 13-5 に、Security Level 2 モジュールの OMG IDL 文を示します。

注意 : この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 15-198 ~ 15-200 ページから、OMG の許可を得て転載しています。
コード リスト 13-5 Security Level 2 モジュールの OMG IDL 文
module SecurityLevel2 {
// インタフェースの宣言を転送
interface PrincipalAuthenticator;
interface Credentials;
interface Current;
      // インタフェース Principal Authenticator
interface PrincipalAuthenticator {
Security::AuthenticationStatus authenticate(
in Security::AuthenticationMethod method,
in string security_name,
in Security::Opaque auth_data,
in Security::AttributeList privileges,
out Credentials creds,
out Security::Opaque continuation_data,
out Security::Opaque auth_specific_data
);

Security::AuthenticationStatus
continue_authentication(
in Security::Opaque response_data,
inout Credentials creds,
out Security::Opaque continuation_data,
out Security::Opaque auth_specific_data
);
};

// インタフェース Credentials
interface Credentials {
attribute Security::AssociationOptions
invocation_options_supported;
attribute Security::AssociationOptions
invocation_options_required;
Security::AttributeList get_attributes(
in Security::AttributeTypeList attributes
);
boolean is_valid(
out Security::UtcT expiry_time
);
};

// インタフェース Current。SecurityLevel1::Current から派生。
// このセキュリティ レベルでの Current の追加オペレーションを提供する。
// これは ORB によって実装される。
interface Current : SecurityLevel1::Current { // PIDL
void set_credentials(
in Security::CredentialType cred_type,
in Credentials cred
);

Credentials get_credentials(
in Security::CredentialType cred_type
);
readonly attribute PrincipalAuthenticator
principal_authenticator;
};
};

Tobj モジュール

ここでは、Tobj モジュールのインタフェースを定義します。

このモジュールは、ATMI 型の認証をプログラムするのに使用するインタフェースを提供します。

コード リスト 13-6 に、Tobj モジュールの OMG IDL 文を示します。

コード リスト 13-6 Tobj モジュールの OMG IDL 文
//Tobj 固有の定義

//get_auth_type () が値を返す
enum AuthType {
TOBJ_NOAUTH,
TOBJ_SYSAUTH,
TOBJ_APPAUTH
};
       typedef sequence<octet>    UserAuthData;
      interface PrincipalAuthenticator :
SecurityLevel2::PrincipalAuthenticator { // PIDL
AuthType get_auth_type();
              Security::AuthenticationStatus logon(
in string user_name,
in string client_name,
in string system_password,
in string user_password,
in UserAuthData user_data
);
void logoff();
              void build_auth_data(
in string user_name,
in string client_name,
in string system_password,
in string user_password,
in UserAuthData user_data,
out Security::Opaque auth_data,
out Security::AttributeList privileges
);
};
};

  ページの先頭       前  次