|
ここでは、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 に関する技術的なサポートやマニュアルは提供していません。 |
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 の許可を得て転載しています。 |
module CORBA {
// CORBA に対する拡張
interface Current {
};
};
基本的な 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 の許可を得て転載しています。 |
// 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 の許可を得て転載しています。 |
Security モジュールは、ほかのセキュリティ モジュールで共通のセキュリティ データ型に対する OMG IDL を定義します。このメソッドは、TimeBase モジュールによって異なり、セキュリティ対応の ORB で使用できなければなりません。
コード リスト 13-3 に、Security モジュールでサポートされているデータ型を示します。
| 注意 : | この情報は、「CORBAservices: Common Object Services Specification」(1995 年 3 月 31 日改訂版、1997 年 11 月更新) の 15-193 ~ 15-195 ページから、OMG の許可を得て転載しています。 |
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 モジュールのデータ型を示します。
ここでは、レベル 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 の許可を得て転載しています。 |
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 の許可を得て転載しています。 |
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 モジュールのインタフェースを定義します。
このモジュールは、ATMI 型の認証をプログラムするのに使用するインタフェースを提供します。
コード リスト 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
);
};
};
|