Sun Java™ System Identity Manager 7.0 リソースリファレンス |
Top SecretTop Secret リソースアダプタは、IBM Host Access Class Library API を介して OS/390 メインフレーム上のユーザーアカウントとメンバーシップの管理をサポートします。このアダプタは、TN3270 エミュレータセッションで Top Secret を管理します。
Top Secret リソースアダプタは、com.waveset.adapter.TopSecretResourceAdapter クラスで定義されます。このアダプタは、次のバージョンの Top Secret をサポートします。
Top Secret Active Sync アダプタ (com.waveset.adapter.TopSecretResourceAdapter) は、Identity Manager 5.0 SP1 から非推奨になりました。現在、このアダプタのすべての機能は Top Secret アダプタに含まれています。Top Secret Active Sync アダプタの既存インスタンスは引き続き使用できますが、新規インスタンスは作成できません。
リソースを設定する際の注意事項
Top Secret Active Sync アダプタは、FTP を使用して TSSAUDIT 機能から出力を取得することにより動作します。その後、出力を解析して、アカウントの作成、変更、および削除を探します。この機能は、Top Secret Recovery ファイルのデータからレポートを生成します。そのため、Recovery ファイルを有効にし、Active Sync のポーリング間隔内に発生するすべての変更を十分保持できる大きさにします。Active Sync アダプタによる次のポーリングまでに出力が利用可能になるように TSSAUDIT ユーティリティーを実行するためのジョブをスケジュールするとよいでしょう。
オプションの世代データグループ (GDG) に TSSAUDIT の出力結果を格納するように設定できます。GDG には、前のバージョンの TSSAUDIT の出力が格納されます。Active Sync アダプタでは、通常の時間に実行できないイベントが失われないようにするために、GDG からの取得がサポートされています。このアダプタを、失われた可能性があるイベントを複数の世代に戻って取得するように設定できます。
次のサンプル JCL は、TSSAUDIT バッチジョブを実行します。
Identity Manager 上で設定する際の注意事項
Top Secret リソースアダプタは、カスタムアダプタです。インストールプロセスを完了するには、次の手順を実行してください。
- Top Secret アダプタを Identity Manager のリソースリストに追加するには、「管理するリソースの設定」ページの「カスタムリソース」セクションに次の値を追加します。
com.waveset.adapter.TopSecretResourceAdapter
- Identity Manager のメインフレームアダプタは、IBM Host Access Class Library (HACL) を使用してメインフレームに接続します。HACL は、IBM Websphere Host On-Demand (HOD) で利用できます。HACL が含まれる推奨 jar は habeans.jar です。これは、HOD に付属する HOD Toolkit (または Host Access Toolkit) とともにインストールされます。サポートされる HACL のバージョンは、HOD V7.0、V8.0、および V9.0 に含まれているバージョンです。
ただし、ツールキットのインストールを利用できない場合は、HOD のインストールに含まれる次の jar を habeans.jar の代わりに使用できます。
使用上の注意
ここでは、Top Secret リソースアダプタの使用に関する情報を示します。次の内容で構成されています。
管理者
TSO セッションでは、複数の同時接続は許可されません。Identity Manager Top Secret 操作の同時実行を実現するには、複数の管理者を作成します。たとえば、2 人の管理者を作成すると、2 つの Identity Manager Top Secret 操作を同時に実行できます。少なくとも 2 人 (できれば 3 人) の管理者を作成するようにしてください。
CICS セッションでは、1 人の管理者に 1 つのセッションという制限はありませんが、必要な場合は 2 人以上の管理者を定義できます。
クラスタ環境で実行する場合は、クラスタ内のサーバーごとに 1 人の管理者を定義します。CICS の場合のように同じ管理者であるとしても、サーバーごとに定義してください。TSO の場合は、クラスタ内のサーバーごとに異なる管理者にします。
クラスタを使用しない場合は、各行のサーバー名が同じ (Identity Manager ホストマシンの名前) になるようにしてください。
注
ホストリソースアダプタは、同じホストに接続している複数のホストリソースでの親和性管理者に対して最大接続数を強制しません。代わりに、各ホストリソース内部の親和性管理者に対して最大接続数が強制されます。
同じシステムを管理する複数のホストリソースがあり、現在それらが同じ管理者アカウントを使用するように設定されている場合は、同じ管理者がリソースに対して同時に複数のアクションを実行しようとしていないことを確認するために、それらのリソースを更新しなければならない可能性があります。
リソースアクション
Top Secret アダプタに必要なリソースアクションは login と logoff です。login アクションは、認証されたセッションに関してメインフレームとネゴシエーションを行います。logoff アクションは、そのセッションが不要になったときに接続を解除します。
thin クライアントのホストアクセス 3270 エミュレータは、スクリプトセッション内のコマンドの実行を簡素化するために、リソースアダプタによるリソースアクションのコンテキストに提供されます。
リソースアクションのコンテキスト
スクリプトアクションのコンテキスト内で、いくつかのグローバル変数が必要とされることがあります。
オブジェクト
説明
使用法
hostAccess
TN3270 エミュレータ。コマンドを実行してメインフレームからの応答を解析するためのインタフェースを提供します。簡易メソッドを提供するために com.waveset.object.HostAccess によってラップされます
メインフレームへの応答の送信、応答の待機、および返された結果の解析に使用します
hostAccessLogin
TopSecret RA によって実装されます。接続固有の情報を提供する getHost()、getPort()、getRequestTimeout() などのメソッドを宣言します
user
メインフレームユーザーの ACID
認証に使用します
password
メインフレームユーザーのパスワードを格納する暗号化されたオブジェクト。プレーンテキストに変換するには password.decryptToString() を使用します
認証に使用します
system
メインフレームシステム名
HostAccess API
次の表では、リソースアクションに渡される hostAccess オブジェクトで使用できるメソッドについて説明します。
メソッド署名
説明
void sendKeys(String input)
指定された文字列 input を送信します。
void sendKeysAndWait(String input, String msg)
sendKeys(input)
waitForInput()
指定された文字列 input を送信します。応答を受信しなかった場合は msg でタイムアウト例外をスローします。boolean waitForStringFound(String s)
指定された文字列 s が見つかったかどうかを返します。
void waitForString(String s)
特定の文字列を受け取るまで待機します。一般に、ログアウト成功の確認などの確認目的以外には使用しないことをお勧めします。
void waitForStringAndInput(String s)
waitForString(s)
waitForInput()
見つからなかった場合は、検索テキストと、エラーメッセージで受け取ったテキストを格納しますvoid waitForString(String s, ArrayList stringsToHide)
waitForString()
見つからなかった場合は、stringsToHide で一覧にされた文字列を除いて、エラーメッセージで受け取ったテキストを格納しますvoid waitForInput()
システムが新しいメッセージを受信できるようになるまで、またはシステムで設定されたタイムアウトまで待機します。
int getRequiredString(String s)
searchText(s,true)
指定された文字列を、カーソル位置から前方に向かって検索しますint getRequiredString(String s, ArrayList stringsToHide)
searchText(s,true)
見つからなかった場合は、stringsToHide で一覧にされた文字列を除いて、エラーメッセージで受け取ったテキストを格納しますString hideFields(String screen, ArrayList stringsToHide)
非表示かつ無効にするべき任意のフィールドとともに文字列を返します。
int searchText(String s, boolean forward)
見つかった場合は文字列のインデックスを、見つからなかった場合は 0 を返します。
void setCursorPos(int pos)
カーソルを画面上の特定の位置に移動します
String getScreen()
現在画面上に表示されているテキストを返します
SendKeys メソッドのニーモニックキーワード
次の表では、英数字以外の値のキー入力をシミュレートする 3270 エミュレータを通して実行される可能性がある特殊機能について説明します。
機能
ニーモニックキーワード
機能
ニーモニックキーワード
Attention
[attn]
F1
[pf1]
Backspace
[backspace]
F2
[pf2]
Backtab
[backtab]
F3
[pf3]
Beginning of Field
[bof]
F4
[pf4]
Clear
[clear]
F5
[pf5]
Cursor Down
[down]
F6
[pf6]
Cursor Left
[left]
F7
[pf7]
Cursor Right
[right]
F8
[pf8]
Cursor Select
[cursel]
F9
[pf9]
Cursor Up
[up]
F10
[pf10]
Delete Character
[delete]
F11
[pf11]
DUP Field
[dup]
F12
[pf12]
Enter
[enter]
F13
[pf13]
End of Field
[eof]
F14
[pf14]
Erase EOF
[eraseeof]
F15
[pf15]
Erase Field
[erasefld]
F16
[pf16]
Erase Input
[erinp]
F17
[pf17]
Field Mark
[fieldmark]
F18
[pf18]
Home
[home]
F19
[pf19]
Insert
[insert]
F20
[pf20]
New Line
[newline]
F21
[pf21]
PA1
[pa1]
F22
[pf22]
PA2
[pa2]
F23
[pf23]
PA3
[pa3]
F24
[pf24]
Page Up
[pageup]
Page Down
[pagedn]
Reset
[reset]
System Request
[sysreq]
Tab Field
[tab]
サンプルリソースアクション
次のコードは、login リソースアクションと logoff リソースアクションのサンプル一式です。このサンプルは、ある特定の顧客の環境に合わせた内容になっています。したがって、コマンド、プロンプト、コマンドシーケンスなどのテキストは、配備環境によって異なる可能性があります (たとえば 32 行目の "ISPF" など)。これらのリソースアクションは、XML 内の Javascript をラップします。
Login アクション
1 <?xml version='1.0' encoding='UTF-8'?>
2 <!DOCTYPE Waveset PUBLIC 'waveset.dtd' 'waveset.dtd'>
3 <Waveset>
4 <ResourceAction name='ACME Login Action'>
5 <ResTypeAction restype='TopSecret'>
6 <act>
7 var TSO_MORE = " ***";
8 var TSO_PROMPT = " READY";
9 var TS_PROMPT = " ?";
10 hostAccess.waitForString("ENTER YOUR APPLICATION NAME");
11 hostAccess.sendKeys("tso[enter]");
12 hostAccess.waitForString("ENTER USERID -");
13 hostAccess.sendKeys(user + "[enter]");
14 hostAccess.waitForString("TSO/E LOGON");
15 hostAccess.sendKeys(password.decryptToString() + "[enter]");
16 hostAccess.sendKeys(password.decryptToString());
17 var pos = hostAccess.searchText(" -Nomail", false);
18 if (pos != 0) {
19 hostAccess.setCursorPos(pos);
20 hostAccess.sendKeys("S");
21 }
22 pos = hostAccess.searchText(" -Nonotice", false);
23 if (pos != 0) {
24 hostAccess.setCursorPos(pos);
25 hostAccess.sendKeys("S");
26 }
27 hostAccess.sendKeys("[enter]");
28 hostAccess.waitForStringAndInput(TSO_MORE);
29 hostAccess.sendKeys("[enter]");
30 hostAccess.waitForStringAndInput(TSO_MORE);
31 hostAccess.sendKeys("[enter]");
32 hostAccess.waitForStringAndInput("ISPF");
33 hostAccess.sendKeys("=x[enter]");
34 hostAccess.waitForString(TSO_PROMPT);
35 var resp =hostAccess.doCmd("PROFILE NOPROMPT MSGID NOINTERCOM NOPAUSE NOWTPMSG PLANGUAGE(ENU) SLANGUAGE(ENU) NOPREFIX[enter]", TSO_PROMPT, TSO_MORE);
36 hostAccess.waitForStringAndInput("ENTER LOGON:");
37 hostAccess.sendKeys(system + "[enter]");
38 hostAccess.waitForStringAndInput("USER-ID.....");
39 hostAccess.sendKeys(user + "[tab]" + password.decryptToString() + "[enter]");
40 var stringsToHide = new java.util.ArrayList();
41 stringsToHide.add(password.decryptToString());
42 hostAccess.waitForString("==>", stringsToHide);
43 hostAccess.waitForInput();
44 hostAccess.sendKeys("[pf6]");
45 hostAccess.waitForInput();
46 </act>
47 </ResTypeAction>
48 </ResourceAction>Logoff アクション
49 <ResourceAction name='ACME Logoff Action'>
50 <ResTypeAction restype='TopSecret'>
51 <act>
52 var TSO_PROMPT = " READY";
53 hostAccess.sendKeys("[clear]end[enter]");
54 hostAccess.waitForString(TSO_PROMPT);
55 hostAccess.sendKeys("logoff[enter]");
56 </act>
57 </ResTypeAction>
58 </ResourceAction>
59 </Waveset>SSL 設定
SSL または TLS を使用してアダプタを Telnet/TN3270 サーバーに接続する
SSL または TLS を使用して Top Secret リソースアダプタを Telnet/TN3270 サーバーに接続するには、次の手順を使用します。
- Telnet/TN3270 サーバーの証明書を PKCS #12 ファイル形式で取得します。このファイルのパスワードとして hod を使用します。サーバーの証明書をエクスポートする方法については、使用しているサーバーのマニュアルを参照してください。一般的なガイドラインについては、後述の「PKCS #12 ファイルの生成」の手順を参照してください。
- PKCS #12 ファイルから CustomizedCAs.class ファイルを作成します。最新バージョンの HOD を使用している場合は、次のコマンドを使用してこの作業を行います。
..¥hod_jre¥jre¥bin¥java -cp ../lib/ssliteV2.zip;../lib/sm.zip com.ibm.eNetwork.HOD.convert.CVT2SSLIGHT CustomizedCAs.p12 hod CustomizedCAs.class
- CustomizedCAs.class ファイルを Identity Manager サーバーのクラスパス内の任意の場所 ($WSHOME/WEB-INF/classes など) に配置します。
- 「セッションプロパティー」というリソース属性がリソースにまだ存在しない場合は、Identity Manager IDE またはデバッグページを使用して、この属性をリソースオブジェクトに追加します。<ResourceAttributes> セクションに、次の定義を追加します。
<ResourceAttribute name='セッションプロパティー' displayName='セッション プロパティー' description='セッションプロパティー' multi='true'>
</ResourceAttribute>
- リソースの「リソースパラメータ」ページに移動し、「セッションプロパティー」リソース属性に次の値を追加します。
SESSION_SSL
true
PKCS #12 ファイルの生成
ここでは、SSL/TLS を使用する Host OnDemand (HOD) リダイレクタを使用している場合に PKCS #12 ファイルを生成するときの一般的な手順を説明します。この作業の実行の詳細については、HOD のマニュアルを参照してください。
- IBM 証明書管理ツールを使用して、新しい HODServerKeyDb.kdb ファイルを作成します。このファイルの一部として、新しい自己署名付き証明書をデフォルトのプライベート証明書として作成します。
HODServerKeyDb.kdb ファイルの作成時に、「証明書データベースにキーを追加しようとしてエラーが発生した」という内容のメッセージが表示された場合は、1 つ以上の信頼できる認証局証明書の期限が切れている可能性があります。IBM の Web サイトをチェックして、最新の証明書を取得します。
- 作成したプライベート証明書を Base64 ASCII として cert.arm ファイルにエクスポートします。
- IBM 証明書管理ツールを使用して cert.arm ファイルから「署名者証明書」にエクスポートされた証明書を追加することにより、CustomizedCAs.p12 という名前の新しい PKCS #12 ファイルを作成します。このファイルのパスワードとして hod を使用します。
トラブルシューティング
「セッションプロパティー」リソース属性に次の内容を追加することにより、HACL のトレースを有効にできます。
SESSION_TRACE
ECLSession=3 ECLPS=3 ECLCommEvent=3 ECLErr=3 DataStream=3 Transport=3 ECLPSEvent=3
Telnet/TN3270 サーバーにも、同じように利用できるログがあります。
プロビジョニングに関する注意事項
次の表に、このアダプタのプロビジョニング機能の概要を示します。
セキュリティーに関する注意事項
ここでは、サポートされる接続と特権の要件について説明します。
サポートされる接続
Identity Manager は、TN3270 を使用して Top Secret アダプタと通信します。
必要な管理特権
管理者に次の特権を付与してください。
アカウント属性
次の表に、デフォルトの Top Secret アカウント属性に関する情報を示します。
アイデンティティーシステム 属性名
リソース
属性名データの種類
説明
Profiles
PROFILE
String
ユーザーに割り当てられたプロファイル。この属性には複数の値を設定できます。
accountId
ACID
String
必須。アカウント ID
fullname
NAME
String
ユーザーの姓名
Installation Data
INSTDATA
String
インストールデータ
TSOO Access
TSO_ACCESS
Boolean
ユーザーが TSO にアクセスできるかどうかを示します
TSOLPROC
TSO.TSOLPROC
String
TSO ログインプロシージャー
OMVS Access
OMVS_ACCESS
Boolean
ユーザーが OMVS にアクセスできるかどうかを示します
Groups
GROUP
String
ユーザーに割り当てられたグループのリスト
Default Group
DFLTGRP
String
ユーザーのデフォルトのグループ
UID
OMVS.UID
String
OMVS ユーザー ID
OMVSPGM
OMVS.OMVSPGM
String
ユーザーの初期 OMVS プログラム
HOME
OMVS.HOME
String
ユーザーの OMVS ホームディレクトリ
Attributes
ATTRIBUTE
String
アカウント属性のリスト
次の表に、デフォルトではスキーママップに一覧表示されていないサポート対象のアカウント属性の一覧を示します。これらの属性のデータの種類は String です。
リソース
属性名説明
CICS.OPTIME
CICS で端末ユーザーがタイムアウトになったとみなされるまでの時間を制御します。
CICS.OPID
CICS オペレータ ID を指定します。
DEPT
部署名を指定します。
DIV
部門名を指定します。
ZONE
ゾーン名を指定します。
FACILITY
ACID がアクセスできる機能またはアクセスできない機能のリストを指定します。
DATASET
ユーザーのデータセットのリストを指定します。
CORPID
企業 ID のリストを指定します。
OTRAN
所有可能なトランザクションのリストを指定します。
TSOACCT
TSO アカウント番号のリストを指定します。
SOURCE
関連付けられた ACID がシステムに入る場合に使用するソースリーダーまたは端末プレフィックスのリストを指定します。
TSO.TRBA
ブロードキャストデータセット内の、ユーザーのメールディレクトリエントリの相対ブロックアドレス (RBA) を指定します。
TSO.TSOCOMMAND
TSO ログオン時に発行されるデフォルトのコマンドを指定します。
TSO.TSODEFPRFG
デフォルトの TSO パフォーマンスグループを割り当てます。
TSO.TSODEST
TSO ユーザーに対して TSO が生成した JCL のデフォルトの出力先識別子を指定します。
TSO.TSOHCLASS
TSO ユーザーに対して TSO が生成した JCL のデフォルトの保持クラスを割り当てます。
TSO.TSOJCLASS
TSO ユーザーから TSO が生成したジョブカードのデフォルトのジョブクラスを割り当てます。
TSO.TSOLACCT
TSO ログオンで使用されるデフォルトのアカウント番号を指定します。
TSO.TSOLSIZE
TSO のデフォルトの領域サイズを K バイト単位で割り当てます。
TSO.TSOMCLASS
TSO ユーザーに対して TSO が生成した JCL のデフォルトのメッセージクラスを割り当てます。
TSO.TSOMSIZE
TSO ユーザーがログオン時に指定できる最大領域サイズを K バイト単位で定義します。
TSO.TSOOPT
TSO ユーザーがログオン時に指定できるデフォルトのオプションを割り当てます。
TSO.TSOSCLASS
TSO ユーザーに対して TSO が生成した JCL のデフォルトの SYSOUT クラスを割り当てます。
TSO.TSOUDATA
サイトで定義されたデータフィールドを TSO ユーザーに割り当てます。
TSO.TSOUNIT
TSO 下での動的割り当てに使用されるデフォルトの単位名を割り当てます。
TSO.TUPT
ユーザープロファイルテーブルの値を指定します。
ほかの Top Secret リソース属性のサポートの詳細については、サービス組織にお問い合わせください。
アイデンティティーテンプレート
$accountId$
サンプルフォーム
組み込みのフォーム
なし
その他の利用可能なフォーム
TopSecretUserForm.xml
トラブルシューティング
Identity Manager のデバッグページを使用して、次のクラスでトレースオプションを設定します。
hostAccess オブジェクトは、Identity Manager でトレースされることもあります。デバッグページからトレースされるクラスは com.waveset.adapter.HostAccess です。メインフレームに送信されたキーストロークと待機メッセージを識別するにはトレースレベル 3 で十分です。トレースレベル 4 では、送信された正確なメッセージと、メインフレームからの応答が表示されます。
注
トレースファイルの場所が有効であることを確認します。デフォルトでは、トレースファイルは InstallDir/idm/config の下のアプリケーションディレクトリに配置されます。アプリケーションが WAR から配備されている場合は、パスにはディレクトリの絶対パスのハードコードが必要になることがあります。クラスタ環境では、トレースファイルをネットワーク共有に書き込むようにしてください。
ソースのトレースのほかに、キーストロークを送信する前の画面テキストを常にログに記録しておくことも役に立つ可能性があります。これは、ファイル書き込み側で実現できます。コマンドのシーケンスは次のとおりです。
<filename> は、アプリケーションサーバーのローカルファイルシステム上のファイルの場所を参照するようにしてください。書き込み側は、flush() メソッドが呼び出されると、その場所へのハンドルを開いて、バッファーに格納されている内容を書き込みます。close() メソッドは、ファイルへのハンドルを解放します。getScreen() メソッドをこの関数に渡すと、デバッグのために画面の内容のダンプを取得できます。このトレースは、画面が正しくナビゲートされて、ログイン/ログアウトが正常に実行されたら削除するようにしてください。