SAP リソースアダプタは、SAP R3 および R3 Enterprise をサポートします。
リソースアダプタは、com.waveset.adapter.SAPResourceAdapter クラスで定義されます。
ユーザーが自分自身の SAP パスワードを変更できるようにするには、次の手順を実行します。
「変更時にユーザーがパスワードを入力」リソース属性を設定します。
スキーママップの両側に WS_USER_PASSWORD を追加します。ユーザーフォームやその他のフォームを変更する必要はありません。
なし。
SAP リソースアダプタは、カスタムアダプタです。インストールプロセスを完了するには、次の手順を実行する必要があります。
http://service.sap.com/connectors から JCo (Java Connection) ツールキットをダウンロードします。SAP JCO ダウンロードページにアクセスするには、ログインとパスワードが必要です。このツールキットには、sapjco-ntintel-2.1.6.zip のような名前が付けられます。この名前は、選択したプラットフォームやバージョンによって異なります。
ダウンロードする JCo ツールキットが、アプリケーションサーバーが動作する Java のビットバージョンと一致していることを確認します。たとえば、JCo は Solaris x86 プラットフォーム上の 64 ビットバージョンでのみ使用できます。したがって、アプリケーションサーバーが Solaris x86 プラットフォーム上の 64 ビットバージョンで実行されている必要があります。
ツールキットを解凍し、インストール手順に従います。必ずライブラリファイルを正しい場所に配置し、環境変数を指示どおりに設定してください。
sapjco.jar ファイルを InstallDir \WEB-INF\lib ディレクトリにコピーします。
SAP リソースを Identity Manager のリソースリストに追加するには、「管理するリソースの設定」ページの「カスタムリソース」セクションに次の値を追加する必要があります。
com.waveset.adapter.SAPResourceAdapter
ここでは、SAP リソースアダプタの使用に関する情報を示します。 次のトピックで構成されています。
このリソースに関する全般的な注意事項は次のとおりです。
アクティビティーグループごとに開始日と終了日を編集できるようにするには、SAPUserForm_with_RoleEffectiveDates_Timezone.xml フォームを読み込みます。このフォームは、ユーザーのタイムゾーンを選択する機能も備えています。
waveset.properties ファイル内の sources.ResourceName .hosts プロパティーを使用して、Active Sync を使用してリソースの同期を行うクラスタ内のホストを選択できます。ResourceName は、リソースオブジェクトの名前に置き換える必要があります。
サンプルユーザーフォームの SAPUserForm.xml と SAPUserForm_with_RoleEffectiveDates_Timezone.xml は、ユーザーのパスワードがすでに期限切れになっているフィールドの定義も含むようになりました。このフィールドの値が true で、Identity Manager 管理者がユーザーのパスワードを作成または変更した場合、そのユーザーは SAP へのログイン時に新しいパスワードを指定する必要があります。
デフォルトでは、SAP アダプタは SAP Java Connector (JCo) を使用して SAP アダプタと通信します。SNC 接続の実装については、第 54 章SNC (Secure Network Communications) 接続の有効化を参照してください。
SAPResourceAdapter と SAPHRActiveSyncAdapter には、SAP JCO および RFC のトレース用のリソース属性が用意されています。これらを使用して、Identity Manager と SAP システムの通信をトレースできます。属性名は、「SAP JCO トレースレベル」と「SAP JCO トレースディレクトリ」です。
環境内に次の環境変数を設定すると、SAP RFC トレースを有効にできます。これらの変数は、アプリケーションサーバーを起動する前に環境内に設定してください。これらの変数は、JCO が SAP システムとの通信に使用する共有ライブラリを制御します。
RFC_TRACE: 0 または 1
RFC_TRACE_DUMP: 0 または 1
RFC_TRACE_DIR: トレースファイルのディレクトリへのパス
CPIC_TRACE_DIR: トレースファイルのディレクトリへのパス
JCO のトレースが必要でない場合は、トレースファイルが作成されないように、RFC_TRACE を 0 に設定してください。
SAP では、パスワードはアカウントが存在するシステムのアカウント間で共有される機密であると見なされます。したがって CUA ランドスケープでは、ユーザーのパスワードの独自コピーが各 CUA クライアントで保守されています。CUA ランドスケープでの標準的なパスワードの変更方法では、クライアントシステムで実動パスワードを設定できません (実動パスワードとは、有効期限が切れていない、次回ログオン時に変更する必要のないパスワードです)。これらの方法では、ランドスケープ内のすべてのシステム (クライアントおよび集中システム) で、ユーザーの初期パスワードを設定できます。
パスワードを変更する機能モジュールは、リモートで実行できる必要があります。CUA ランドスケープでは、初期パスワードの SCUM 設定を「global」または「everywhere」に設定する必要があります。その他のケースでは、CUA 集中システムはクライアントのパスワードをリセットできません。特定の環境では、パスワード変更のエラーが発生します。アダプタでは、ユーザーが存在するすべてのシステムの CUA ランドスケープで、実動パスワードを設定できます。システムごとに、パスワードを変更するだけで設定を行えます。この機能を有効にするには、すべてのクライアントシステムに対して実行される CUA 集中システムに、特別な機能モジュールをインストールする必要があります。モジュールは、InstallDir\idm\sample\other にソースとして提供されます。このモジュールを、SAP 集中システムにインストールする必要があります。機能モジュールの名前は、「CUA Child Password Change Function Module」リソース属性で設定する必要があります。
CUA ランドスケープでパスワードが変更され、このモジュールが使用されている場合、1 回のパスワードの変更に対して複数のエラー (各クライアントと集中システムのそれぞれで 1 つずつ) が発生する場合があります。各システムは、それぞれ独自のパスワードポリシーを維持します。あるシステムの規則に準拠するパスワードが、別のシステムではポリシーエラーとなる場合もあります。特定のシステムのエラーにより、ほかのシステムが変更されないという意味ではありません。この動作は、CUA ランドスケープで SAP がパスワードを定義および操作する方法によって決まります。
CUA がアダプタで設定されているときに、モジュールが集中システムにインストールされていないか、属性がアダプタで設定されていない場合、実動パスワードの変更は集中システムのみに適用されます。初期パスワードの設定とパスワードリセットの実行 (つまり、期限切れのパスワード) は、この設定変更の影響を受けません。
SAP アダプタは、CUA モードがアダプタで有効な場合を除き、アカウントの名前の変更をサポートするようになりました。アダプタは、この機能を実行するために、既存のアカウントを新しいアカウントにコピーして元のアカウントを削除します。SAP は、アカウントの名前の変更を推奨していませんが、SAP GUI から使用する Transaction SU01 というユーザー管理アプリケーションではこのオプションを提供しています。したがって、Identity Manager もこのオプションをサポートします。SAP では名前の変更機能を将来のリリースでサポートしなくなる可能性があることに注意してください。
SAP GUI では非公開 API および SAP カーネルにアクセスできるため、名前の変更に別の方法を使用します。次の手順では、名前の変更操作を実行する方法について概要を説明します。
既存のユーザーのユーザー情報を取得します。
ALIAS 属性が存在する場合は、ALIAS 属性を保存します。
新しいユーザーを作成します。
新しいユーザーでアクティビティーグループを設定します。
新しいユーザーでプロファイルを設定します。
古いユーザーの個別設定データを取得します。
新しいユーザーの個別設定データを設定します。
古いユーザーを削除します。
古いユーザーで別名が設定されていた場合は、新しいユーザーで別名を設定します。
手順 1 ~ 3 でエラーが発生した場合は、操作がただちに失敗します。手順 4 ~ 7 でエラーが発生した場合は、新しいユーザーが削除され、操作全体が失敗します。新しいユーザーが削除できない場合は、警告が WavesetResult に設定されます。手順 8 ~ 9 でエラーが発生した場合は、警告が WavesetResult に追加されますが、操作は成功します。
名前の変更操作では、新しいパスワードを新しいユーザーに設定する必要があります。設定する最も簡単な方法は、Change User Password タスクを呼び出すように Rename User タスクをカスタマイズすることです。
SAP アダプタの SAP Global Trade Services のサポートを有効にするには、次の表の「ロール名」に一覧表示された該当するロールを有効にします。SAP は、この表の「生成されるロール」列に一覧表示されたロールを生成します。生成されたロールを SAP GTS の該当するユーザープロファイルに割り当ててください。
ロールラベル |
ロール名 |
生成されるロール |
---|---|---|
通関処理スペシャリスト |
SAP_BW_SLL_CUS |
SAP_BWC_SLL_CUS |
特恵処理スペシャリスト |
SAP_BW_SLL_PRE |
SAP_BWC_SLL_PRE |
還付金スペシャリスト |
SAP_BW_SLL_RES |
SAP_BWC_SLL_RES |
法規制スペシャリスト |
SAP_BW_SLL_LCO |
SAP_BWC_SLL_LCO |
SAP アダプタは、BAPI_USER_CREATE1 および BAPI_USER_CHANGE によって呼び出された任意の SAP テーブル、特に GROUPS テーブルおよび PARAMETER テーブルにプロビジョニングできます。GROUPS 以外の任意のテーブルについてこの機能を有効にするには、リソースユーザー属性を SAP_Table_Name->Table という形式でスキーママップに追加する必要があります。たとえば、PARAMETER->Table とします。属性は、複合データ型を割り当てられる必要があります。
アダプタは、GROUPS->USERGROUP アカウント属性という名前で、タイプが String であるアカウント属性を提供します。この属性は、GROUPS テーブルのデータを処理します。デフォルトでこの属性のタイプは String です。この属性のタイプが String に設定されている場合、アダプタは値を文字列のリストとして処理します。アダプタがほかのテーブルと同じ方法でこのテーブルのデータを処理するようにするには、データ型を複合に変更する必要があります。
$WSHOME/web/sample/forms/SAPUserForm.xml ファイルには、String のアカウント属性タイプおよび複合属性タイプを使用して GROUP テーブルを管理する方法を示すユーザーフォームの例が含まれています。
ここでは、サポートされる接続と特権の要件について説明します。
SAP Java Connector (JCo) 経由の BAPI
SAP Secure Network Communications
SAP に接続するユーザー名を、SAP ユーザーにアクセスできるロールに割り当ててください。
機能 |
サポート状況 |
---|---|
アカウントの有効化/無効化 |
あり |
アカウントの名前の変更 |
使用可。 ただし CUA が有効な場合を除きます。 |
パススルー認証 |
なし |
前アクションと後アクション |
なし |
データ読み込みメソッド |
|
次の表に、デフォルトの SAP アカウント属性に関する情報を示します。Enable SAP GRC Access Enforcer?」リソースパラメータが選択されている場合は、追加属性も提供されます。属性タイプはすべて String です。
アイデンティティーシステムユーザー属性 |
リソース属性名 |
説明 |
---|---|---|
accountId |
USERNAME->BAPIBNAME |
必須。ユーザーのアカウント ID。 |
firstname |
ADDRESS->FIRSTNAME |
ユーザーの名 |
fullname |
ADDRESS->FULLNAME |
ユーザーの姓名 |
|
ADDRESS->E_MAIL |
ユーザーの電子メールアドレス |
lastname |
ADDRESS->LASTNAME |
必須。ユーザーの姓 |
groups |
GROUPS->USERGROUP |
SAP GROUPS テーブルのプロビジョニング。 |
l |
WS_PasswordExpired |
ログイン時にユーザーに新しいパスワードを強制的に入力させます。 |
accountLockedNoPwd |
ISLOCKED->NO_USER_PW |
ブール型。ユーザーがパスワードを設定していないためにアカウントがロックされているかどうかを示します。 |
accountLockedWrngPwd |
ISLOCKED->WRNG_LOGON |
ブール型。ログイン試行が失敗したためにアカウントがロックされているかどうかを示します。 |
personNumber |
ADDRESS->PERS_NO |
ユーザーを特定するための内部キー |
addressNumber |
ADDRESS->ADDR_NO |
一元的なアドレス管理に使用される、アドレスを特定するための内部キー |
birthName |
ADDRESS->BIRTH_NAME |
旧姓 (出生時に与えられた姓) |
middleName |
ADDRESS->MIDDLENAME |
ユーザーのミドルネーム |
secondLastName |
ADDRESS->SECONDNAME |
第二姓 |
academicTitle |
ADDRESS->TITLE_ACA1 |
学位 (Dr.、Prof. など) |
academicTitle2 |
ADDRESS->TITLE_ACA3 |
第二学位 |
namePrefix |
ADDRESS->PREFIX1 |
姓の前置語 (von、van der、de la など) |
namePrefix2 |
ADDRESS->PREFIX2 |
姓の 2 つ目の前置語 |
titleSupplement |
ADDRESS->TITLE_SPPL |
名前の補足 (Lord、Lady など) |
nickname |
ADDRESS->NICKNAME |
ユーザーのニックネーム |
initials |
ADDRESS->INITIALS |
ミドルネームのイニシャル |
nameFormat |
ADDRESS->NAMEFORMAT |
ユーザーの名前を完全な形式で表示する場合の、名前の構成要素の配置順序。この順序は、国ごとに異なる場合があります。 |
nameFormatCountry |
ADDRESS->NAMCOUNTRY |
名前の形式を判定するために使用される国名 |
languageKey |
ADDRESS->LANGU_P |
テキストの入力と表示に使用される言語 |
iso639Language |
ADDRESS->LANGUP_ISO |
ISO 639 言語コード |
sortKey1 |
ADDRESS->SORT1_P |
検索用語 |
sortKey2 |
ADDRESS->SORT2_P |
二次検索用語 |
department |
ADDRESS->DEPARTMENT |
会社の住所の一部としての社内の部署 |
function |
ADDRESS->FUNCTION |
ユーザーの職能 |
buildingNumber |
ADDRESS->BUILDING_P |
ユーザーの職場があるビル番号 |
buildingFloor |
ADDRESS->FLOOR_P |
ユーザーの職場がある階 |
roomNumber |
ADDRESS->ROOM_NO_P |
ユーザーの職場がある部屋番号 |
correspondenceCode |
ADDRESS->INITS_SIG |
通信コード |
inhouseMailCode |
ADDRESS->INHOUSE_ML |
内部郵便コード |
communicationType |
ADDRESS->COMM_TYPE |
ユーザーがどのような方法でビジネスパートナーと文書やメッセージを交換するかを示します。 |
title |
ADDRESS->TITLE |
敬称 (Mr.、Mrs. など) |
titleP |
ADDRESS->TITLE_P |
敬称 (Mr.、Mrs. など) |
addressName |
ADDRESS->NAME |
宛名 |
addressName2 |
ADDRESS->NAME_2 |
宛名の 2 行目 |
addressName3 |
ADDRESS->NAME_3 |
宛名の 3 行目 |
addressName4 |
ADDRESS->NAME_4 |
宛名の 4 行目 |
careOfName |
ADDRESS->C_O_NAME |
受取人が居住者と異なる場合の宛名部分 (c/o = 気付) |
city |
ADDRESS->CITY |
ユーザーの市 |
district |
ADDRESS->DISTRICT |
市または地区の追加部分 |
cityNumber |
ADDRESS->CITY_N |
都市コード |
districtNumber |
ADDRESS->DISTRCT_NO |
地区コード |
cityPostalCode |
ADDRESS->POSTL_COD1 |
ユーザーの郵便番号 |
poBoxPostalCode |
ADDRESS->POSTL_COD2 |
私書箱を一意に割り当てるために必要な郵便コード。 |
companyPostalCode |
ADDRESS->POSTL_COD3 |
企業に直接割り当てられる郵便コード。 |
poBox |
ADDRESS->PO_BOX |
ユーザーの私書箱 |
poBoxCity |
ADDRESS->PO_BOX_CIT |
私書箱の市 |
poBoxCityCode |
ADDRESS->PBOXCIT_NO |
私書箱の市 (宛名の市と異なる場合)。 |
postalDeliveryDistrict |
ADDRESS->DELIV_DIS |
郵便配達区域 |
transportZone |
ADDRESS->TRANSPZONE |
品物の受取人または供給元の地域圏 |
street |
ADDRESS->STREET |
ユーザーの街路住所 |
streetNumber |
ADDRESS->STREET_NO |
街路コード |
streetAbbreviation |
ADDRESS->STR_ABBR |
街路の略称 |
houseNumber |
ADDRESS->HOUSE_NO |
街路住所の番号部分 |
houseNumber2 |
ADDRESS->HOUSE_NO2 |
第二住所番号 |
street2 |
ADDRESS->STR_SUPPL1 |
街路行の上に出力される追加の住所フィールド。 |
street3 |
ADDRESS->STR_SUPPL2 |
街路行の上に出力される追加の住所フィールド。 |
street4 |
ADDRESS->STR_SUPPL3 |
街路行の下に出力される追加の住所フィールド。 |
street5 |
ADDRESS->LOCATION |
街路行の下に出力される追加の住所フィールド。 |
oldBuilding |
ADDRESS->BUILDING |
連絡窓口住所のビルの番号または ID。 |
floor |
ADDRESS->FLOOR |
住所の階数 |
roomNumber |
ADDRESS->ROOM_NO |
住所の部屋番号 |
countryCode |
ADDRESS->COUNTRY |
住所の国名 |
countryCodeISO |
ADDRESS->COUNTRYISO |
住所の国を表す 2 文字の ISO コード |
languageKey |
ADDRESS->LANGU |
テキストの入力と表示に使用される言語 |
languageKeyISO |
ADDRESS->LANGU_ISO |
ISO 639 言語コード |
region |
ADDRESS->REGION |
州または都道府県 |
sort2 |
ADDRESS->SORT2 |
二次検索用語 |
timeZone |
LOGONDATA->TZONE |
タイムゾーンと UTC との時差 (時/分単位) |
taxJurisdictionCode |
ADDRESS->TAXJURCODE |
税金の納入先となる税務機関。常に、品物が配達された市です。 |
telephoneNumber |
ADDRESS->TEL1_NUMBR |
電話番号 (市外局番を含み、国番号を除く) |
telephoneExtension |
ADDRESS->TEL1_EXT |
内線電話番号 |
faxNumber |
ADDRESS->FAX_NUMBER |
FAX 番号 (市外局番を含み、国番号を除く) |
faxExtension |
ADDRESS->FAX_EXTENS |
内線 FAX 番号 |
buildingNumber |
ADDRESS->BUILD_LONG |
住所のビルの番号または略称。 |
cuaSystems |
SYSTEMS->CUASYSTEMS |
Central User Administration システム名 |
profiles |
PROFILES->BAPIPROF |
ユーザーに割り当てられたプロファイル。 |
activityGroups |
ACTIVITYGROUPOBJECTS |
ユーザーに割り当てられたロール。 |
lastLoginTime |
LOGONDATA->LTIME |
最新のログイン時間を一覧表示する読み取り専用属性。 |
このアダプタは、SAP リソース上のオブジェクトを管理しません。
次の表では、ユーザーフォーム内で listAllObjects メソッドを使用して呼び出すことのできる SAP オブジェクトについて説明します。
Object |
説明 |
---|---|
account |
SAP リソースで定義されたユーザーを一覧表示します。 |
activityGroups |
ユーザーが使用できるアクティビティーグループ (またはロール) を一覧表示します。(非 CUA モードのみ) |
cuaSystems |
CUA が有効な場合に、CUA 子の名前を一覧表示します。 |
Group |
SAP リソースで使用可能なグループを一覧表示します。 |
localActivityGroups |
CUA が有効な場合に、CUA 環境で特定の子システムに存在するアクティビティーグループを一覧表示します。 |
profiles |
認証プロファイルの名前を一覧表示します。 |
table |
SAP テーブルの列の内容を一覧表示します。option マップには次のパラメータが必要です。 name は、SAP テーブル名を表します。 offset は、テーブルの開始文字の列を表します。 length は、データフィールドの長さを表します。 これらの値の判断については、BAPI RFC_GET_TABLE_ENTRIES に関する SAP のマニュアルを参照してください。詳細は、「追加のテーブルのサポート」を参照してください。 |
timeZones |
SAP システムでサポートされる、使用可能なタイムゾーンを一覧表示します。 |
usertype |
SAP システムで使用可能なユーザータイプを一覧表示します。 |
SAPForm.xml SAPUserForm_with_RoleEffectiveDates_Timezone.xml SAPHRActiveSyncForm.xml
Identity Manager のデバッグページを使用して、次のクラスでトレースオプションを設定します。
com.waveset.adapter.SAPResourceAdapter
インストールされている SAP Java Connector (JCO) のバージョンを判定し、それが正しくインストールされているかどうかを判定するには、次のコマンドを実行します。
java -jar sapjco.jar
このコマンドは、JCO のバージョンとともに、SAP システムと通信する JNI プラットフォーム依存ライブラリおよび RFC ライブラリを返します。
プラットフォーム依存ライブラリが見つからない場合は、SAP のマニュアルを参照して、SAP Java Connector の正しいインストール方法を調べてください。