List Worksのユーザ認証に、ユーザ作成ライブラリによる認証を利用する場合は、ユーザ認証や保管フォルダのアクセス権の判断に出口ルーチンを利用して認証処理を行っています。そのため、ディレクトリサービスなどを利用する場合は、以下のユーザ作成ライブラリの出口ルーチンを作成しておく必要があります。出口ルーチンは、文字のコード系をEUC(U90)で作成してください。
注意
ユーザ作成ライブラリによる認証でユーザ認証する運用において、ユーザ認証が60秒以内に完了しない場合、タイムアウトと判断され、ログインに失敗する場合があります。ユーザ認証が60秒以上の時間がかかっていないか確認し、かかる場合は認証処理、およびネットワーク環境を見直してください。
出口ルーチン | 関数名 | 概要 |
---|---|---|
リスト管理サーバへのログイン時に呼び出されます。 | ||
管理者ツールのアクセス権設定画面などでユーザ一覧/グループ一覧を取得する際の、「ユーザまたはグループの選択」画面構築時に呼び出されます。 呼び出された結果、「検索する項目」に条件(属性項目名)が設定されます。 | ||
管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面で、グループを指定して【検索】ボタンをクリックした際に呼び出されます。 その結果、条件にあったグループが一覧に表示されます。 | ||
管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面で、ユーザを指定して【検索】ボタンをクリックした際に呼び出されます。 その結果、条件にあったユーザが一覧に表示されます。 |
ライブライリ名 | 格納場所 |
---|---|
lwlogin.so | Linuxの環境変数「LD_LIBRARY_PATH」に指定されているディレクトリ |
出口ルーチンの関数定義、出口ルーチンで使用する構造体の形式を格納したヘッダファイルの格納場所は、以下のとおりです。
ファイル名 | 格納場所 |
---|---|
lwlogin.h | 「/opt/FJSVlw-sv/include」ディレクトリ |
各出口ルーチンのインタフェースを説明します。
(1) ログイン出口のインタフェース
ログイン出口(LW_LDAP_LoginExit関数)は、リスト管理サーバへのログイン時に呼び出されます。
LW_LDAP_LoginExit関数のインタフェースを以下に示します。
int LW_LDAP_LoginExit (LOGIN_INDATA *lpIndata, LOGIN_OUTDATA *lpOutdata)
ログイン時に呼び出されます。
出口ルーチンでは、入力パラメタとして渡されたログインユーザIDとパスワードから、ログインを許可するかどうかを判定します。許可する場合は、ユーザ名などのユーザ情報と、そのユーザが所属するグループ情報を出力パラメタに設定して復帰してください。
本関数呼び出し時に設定されるLOGIN_INDATAの構造体のアドレスが設定されています。
本関数復帰時に指定するLOGIN_OUTDATAの構造体のアドレスが設定されています。
LOGIN_INDATA構造体の内容を以下に示します。
typedef struct { char iUid[40]; /* ログインユーザID(有効文字数26バイト) */ char iPasswd[16]; /* パスワード(有効文字数14バイト) */ int iMaxReturnNo; /* 返却可能最大グループ数 */ char iPassword[256]; /* パスワード(有効文字数255バイト) */ } LOGIN_INDATA ;
LOGIN_INDATA構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
ログインユーザID | リストナビなどのログイン画面で指定したユーザIDが26バイト以内で設定されます。 | |
パスワード | リストナビなどのログイン画面で指定したパスワードが14バイト以内で設定されます。List WorksV10.4以前に作成したログイン出口の互換用です。 | |
返却可能最大グループ数 | 返却可能最大グループ数が設定されます。初期値は20です。再度呼び出されたときは、LOGIN_OUTDATA構造体のoGroupNumで返却した値が設定されます。 | |
パスワード | リストナビなどのログイン画面で指定したパスワードが255バイト以内で設定されます。List Works V11以降で利用可能なパスワードです。 |
注意
iPasswdはList WorksV10.4以前に作成したログイン出口の互換用です。
パスワードはiPasswdとiPasswordの両方に設定されますが、新規にログイン出口を作成する場合はiPasswordを参照してください。
なお、パスワードが14バイトを超える場合はiPasswdには先頭の14バイトが設定されます。
Windows版List Works V11添付のリストナビ、Web連携から接続した場合のパスワードは、有効文字数14バイトとなります。
Solaris版List Works V11添付のリストナビから接続した場合のパスワードは、有効文字数14バイトとなります。
LOGIN_OUTDATA構造体の内容を以下に示します。
typedef struct { char oUid[40]; /* ユーザID(有効文字数26バイト) */ char oName[44]; /* ユーザ名(有効文字数40バイト) */ int oAdmin; /* 管理者権限 0:権限なし 1:権限あり */ int oAccessibility[4]; /* ユーザの業務権限 */ } LDAP_USER_INFO ; typedef struct { char oGid[28]; /* グループID(有効文字数26バイト) */ char oName[44]; /* グループ名(有効文字数40バイト) */ int oAccessibility[4]; /* グループの業務権限 */ } LDAP_GROUP_INFO ; typedef struct { LDAP_USER_INFO oUserInfo; /* ユーザ情報 */ int oGroupNum; /* 返却するグループ数(値を格納した数を設定する) */ LDAP_GROUP_INFO *oGroupInfo; /* ユーザが所属するグループ情報 */ } LOGIN_OUTDATA ;
ユーザ、グループの業務権限はそれぞれLDAP_USER_INFO構造体、LDAP_GROUP_INFO構造体のメンバであるint型の配列oAccessibilityに、以下に示すビットの論理和で指定します。
注意
各機能に対する業務権限の有無は、以下のように決まります。
ユーザとユーザが所属するグループそれぞれに権限が与えられている場合に限り、その機能に対する権限が与えられます。
ユーザが複数のグループに所属している場合は、所属するグループの中で1つでも権限が与えられていて、かつユーザに権限が与えられている場合に限り、その機能に対する権限が与えられます。
管理者権限を持つユーザは、業務権限の指定に関係なくすべての権限が与えられます。
以下に示すビット以外の項目はすべて予約域となっています。
oAccessibility | 業務権限名 | 説明 | アクセス権 | |
---|---|---|---|---|
インデックス | ビットマスク | |||
0 | 0x00000001 | フォルダの作成 | 保管フォルダ配下にフォルダの作成を許可します。 | 保管フォルダ |
0 | 0x00000002 | フォルダの削除 | フォルダの削除を許可します。 | |
0 | 0x00000008 | フォルダの表示 | フォルダの表示を許可します。 | |
0 | 0x00000020 | 帳票の削除 | 帳票の削除を許可します。 | 保管フォルダ内の帳票 |
0 | 0x00000080 | 帳票情報の変更 | 帳票情報の変更を許可します。 | |
0 | 0x00000100 | 帳票一覧への表示 | 帳票の帳票一覧への表示を許可します。 | |
0 | 0x00000400 | 帳票の表示 | 帳票の表示を許可します。 | |
0 | 0x00002000 | データ変換 | 帳票のデータ変換(Text、CSV 形式に変換)を許可します。 | |
0 | 0x00008000 | 帳票への記入 | 帳票に対して、記入情報の記入を許可します。 | |
0 | 0x00010000 | 上書き保存 | 記入情報の保存を許可します。 | |
0 | 0x00020000 | 名前を付けて保存 | 帳票のマイ コンピュータへの保存を許可します。 | |
0 | 0x00040000 | クリップボードへコピー | 帳票のクリップボードへのコピーを許可します。 | |
0 | 0x00400000 | フォルダ配下のフォルダ一覧表示 | 保管フォルダ配下のフォルダの一覧表示を許可します。 | 保管フォルダ |
0 | 0x00800000 | フォルダ配下の帳票一覧表示 | 保管フォルダ配下の帳票の一覧表示を許可します。 | |
0 | 0x01000000 | フォルダのプロパティ表示 | フォルダのプロパティ表示を許可します。 | |
0 | 0x02000000 | フォルダのプロパティ更新 | フォルダのプロパティ更新を許可します。 | |
0 | 0x04000000 | フォルダの移動 | フォルダの移動を許可します。 | |
0 | 0x08000000 | フォルダの複写 | フォルダの複写を許可します。 | |
0 | 0x10000000 | フォルダ名の変更 | フォルダ名の変更を許可します。 | |
0 | 0x20000000 | 帳票のローカル印刷 | 帳票のローカル印刷を許可します。 | 保管フォルダ内の帳票 |
0 | 0x40000000 | 帳票のリモート印刷 | 帳票のリモート印刷を許可します。 | |
0 | 0x80000000 | 帳票の移動 | 帳票の移動を許可します。 | |
1 | 0x00000001 | 帳票の複写 | 帳票の複写を許可します。 | |
1 | 0x00000002 | PDF表示/保存 | 帳票のPDF 形式での表示/保存を許可します。 | |
1 | 0x00000008 | 帳票項目の保存 | 帳票に対して、帳票項目の保存を許可します。 | |
1 | 0x00000010 | 抜き出し検索範囲の設定 | 帳票に対して、抜き出し検索範囲の設定を許可します。 | |
1 | 0x00000020 | オーバレイ位置の設定 | 帳票に対して、オーバレイ位置の設定を許可します。 | |
1 | 0x00000040 | 印刷フォルダの表示 | 印刷フォルダの表示を許可します。(注1) | 印刷フォルダ |
1 | 0x00000080 | 印刷フォルダ配下の帳票一覧表示 | 印刷フォルダ内配下の帳票一覧表示を許可します。(注1) | |
1 | 0x00000100 | 印刷フォルダのプロパティ表示 | 印刷フォルダのプロパティ表示を許可します。(注1) | |
1 | 0x00008000 | 印刷フォルダ内の帳票の移動 | 印刷フォルダ内の帳票の移動を許可します。 | 印刷フォルダ内の帳票 |
1 | 0x00020000 | 印刷フォルダ内の帳票の削除 | 印刷フォルダ内の帳票の削除を許可します。(注1) |
注1) リモート印刷機能は廃止されたので、設定不要です。
0:正常終了(ログインを許可する)
-1:異常終了
1:指定されたユーザIDは存在しない。
2:指定されたユーザIDのパスワードの有効期限が切れている。
3:指定されたユーザIDが複数登録されている。
4:パスワードに誤りがある。
5:所属グループ数がiMaxReturnNoを超えている。
ユーザの所属グループが「返却可能最大グループ数(構造体LOGIN_INDATAのメンバiMaxReturnNo)」を超えるときは、復帰値に「5(所属グループ数がiMaxReturnNoを超えている)」を設定し、「返却するグループ数(構造体LOGIN_OUTDATAのメンバoGroupNum)」に所属グループ数を設定して復帰してください。この場合は、設定された所属グループ数分の返却領域を獲得しなおして、再度、本ログイン出口モジュールを呼び出します(ただし、現在のユーザ出口認証の仕様として、ユーザの所属できるグループ数の最大値は256グループまでとしています)。
(2) 検索画面情報取得出口のインタフェース
検索画面情報取得出口(LW_LDAP_GetDisplayCondition関数)は、管理者ツールのアクセス権設定画面などでユーザ一覧/グループ一覧を取得する際の、「ユーザまたはグループの選択」画面構築時に呼び出されます。
「ユーザまたはグループの選択」画面の「検索する項目」に指定する条件(属性項目名)を、出口ルーチンにより設定することができます。
LW_LDAP_GetDisplayCondition関数のインタフェースを以下に示します。
int LW_LDAP_GetDisplayCondition(LDAP_DISPLAY_OUTDATA *lpOutdata)
「ユーザまたはグループの選択」画面の構築時に呼び出されます。
出口ルーチンでは、ユーザ情報検索、およびグループ情報検索で指定可能な属性項目名を出力パラメタに設定して復帰してください。
本関数復帰時に指定するLDAP_DISPLAY_OUTDATAの構造体のアドレスが設定されています。
LDAP_DISPLAY_OUTDATA構造体の内容を以下に示します。
typedef struct { char fieldName[44]; /* 検索用属性名(有効文字列40バイト) */ } LDAP_SEARCH_ATTR_NAME; typedef struct { int oGroupAttrNum; /* グループ検索用属性名の個数(最大10個まで) */ LDAP_SEARCH_ATTR_NAME groupAttr[10]; /* グループ検索用属性名の配列(最大10個まで) */ int oUserAttrNum; /* ユーザ検索用属性名の個数 (最大10個まで) */ LDAP_SEARCH_ATTR_NAME userAttr [10]; /* ユーザ検索用属性名の配列(最大10個まで) */ } LDAP_DISPLAY_OUTDATA;
0:正常終了
-1:異常終了
本関数で設定された文字列が検索画面の左側のコンボボックスに表示されます。
(3) グループ情報検索出口のインタフェース
グループ情報検索出口(LW_LDAP_SearchGroup関数)は、管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面でグループを指定して検索した際に呼び出されます。
LW_LDAP_SearchGroup関数のインタフェースを以下に示します。
int LW_LDAP_SearchGroup(LDAP_SEARCH_INDATA *lpIndata, LDAP_SEARCH_OUTDATA *lpOutdata)
グループ情報の検索時に呼び出されます。
出口ルーチンでは、入力パラメタとして渡された検索条件に該当するグループを検索し、検索でヒットしたグループのグループ情報を出力パラメタに設定して復帰してください。
本関数呼び出し時に設定されるLDAP_SEARCH_INDATAの構造体のアドレスが設定されています。
本関数復帰時に指定するLDAP_SEARCH_OUTDATAの構造体のアドレスが設定されています。
LDAP_SEARCH_INDATA構造体の内容を以下に示します。
typedef struct { LDAP_SEARCH_ATTR_NAME iField; /* 検索する属性名 */ char iValue[44]; /* 検索する値(有効文字数40文字) */ int iOperator; /* 検索演算子(0:含む 1:先頭にある 2:含まない) */ } LDAP_SEARCH_CONDITION; typedef struct { int iEquationCount; /* 検索条件数(最大3個まで) */ int iConjunction; /* 検索条件の接続子(1:AND 2:OR) */ LDAP_SEARCH_CONDITION iConditions[3]; /* 検索条件 */ int iMaxReturnNo; /* 返却可能最大数 */ } LDAP_SEARCH_INDATA;
LDAP_SEARCH_OUTDATA構造体の内容を以下に示します。
typedef struct { int oReturnCount; /* 返却数(値を格納した数を設定する) */ union { LDAP_GROUP_INFO *groups; /* グループ情報返却領域 */ /* (呼び出し元でiMaxReturnNoサイズを確保) */ LDAP_USER_INFO *users; /* ユーザ情報返却領域 */ /* (呼び出し元でiMaxReturnNoサイズを確保) */ } result; } LDAP_SEARCH_OUTDATA;
0:正常終了
1:検索結果が多すぎる。
-1:その他のエラー(LDAP関数のエラー)
検索したグループ情報は、グループ情報返却領域(構造体LDAP_SEARCH_OUTDATAのメンバresult.groups)に設定してください。
なお、グループ情報返却領域は、本関数の呼び出し時に返却可能最大数分の領域が獲得されています。返却可能最大数は、構造体LDAP_SEARCH_INDATAのメンバiMaxReturnNoに格納されていますので、検索結果が返却可能最大数を超える場合は、復帰値に「1(検索結果が多すぎる)」を設定して復帰してください。
(4) ユーザ情報検索出口のインタフェース
ユーザ情報検索出口(LW_LDAP_SearchUser関数)は、管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面でユーザを指定して検索した際に呼び出されます。
LW_LDAP_SearchUser関数のインタフェースを以下に示します。
int LW_LDAP_SearchUser(LDAP_SEARCH_INDATA *lpIndata, LDAP_SEARCH_OUTDATA *lpOutdata)
ユーザ情報の検索時に呼び出されます。
出口ルーチンでは、入力パラメタとして渡された検索条件に該当するユーザを検索し、検索でヒットしたユーザのユーザ情報を出力パラメタに設定して復帰してください。
本関数呼び出し時に設定されるLDAP_SEARCH_INDATAの構造体のアドレスが設定されています。
本関数復帰時に指定するLDAP_SEARCH_OUTDATAの構造体のアドレスが設定されています。
LDAP_SEARCH_INDATA構造体の内容を以下に示します。
typedef struct { LDAP_SEARCH_ATTR_NAME iField; /* 検索する属性 */ char iValue[44]; /* 検索する値(有効文字数40文字) */ int iOperator; /* 検索演算子(0:含む 1:先頭にある 2:含まない) */ } LDAP_SEARCH_CONDITION; typedef struct { int iEquationCount; /* 検索条件数(最大3個まで) */ int iConjunction; /* 検索条件の接続子(1:AND 2:OR) */ LDAP_SEARCH_CONDITION iConditions[3]; /* 検索条件 */ int iMaxReturnNo; /* 返却可能最大数 */ } LDAP_SEARCH_INDATA;
LDAP_SEARCH_OUTDATA構造体の内容を以下に示します。
typedef struct { int oReturnCount; /* 返却数(値を格納した数を設定する) */ union { LDAP_GROUP_INFO *groups; /* グループ情報返却領域 */ /* (呼び出し元でiMaxReturnNoサイズを確保) */ LDAP_USER_INFO *users; /* ユーザ情報返却領域 */ /* (呼び出し元でiMaxReturnNoサイズを確保) */ } result; } LDAP_SEARCH_OUTDATA;
0:正常終了
1:検索結果が多すぎる。
-1:その他のエラー(LDAP関数のエラー)
検索したユーザ情報は、ユーザ情報返却領域(構造体LDAP_SEARCH_OUTDATAのメンバresult.users)に設定してください。
なお、ユーザ情報返却領域は、本関数の呼び出し時に返却可能最大数分の領域が獲得されています。返却可能最大数は、構造体LDAP_SEARCH_INDATAのメンバiMaxReturnNoに格納されていますので、検索結果が返却可能最大数を超える場合は、復帰値に「1(検索結果が多すぎる)」を設定して復帰してください。