本バージョンのList Worksのユーザ認証に、List Works V10.1以前で作成したユーザ作成ライブラリによる認証を利用する場合は、本章で説明する出口ルーチンを使用します。
注意
V10.1以前で作成したユーザ作成ライブラリを使用するには、リスト管理サーバのプロパティファイルで「system.usercreatedlib.version」に「1」を設定する必要があります。
リスト管理サーバのプロパティファイルの設定については、“付録E リスト管理サーバのプロパティファイル”を参照してください。 |
なお、出口ルーチンの機能概要、関数名、および出口ルーチンの準備時における注意事項は、本バージョンと同様です。
詳細については、“2.3.3 出口ルーチンの準備 <ユーザ作成ライブラリによる認証の場合>”を参照してください。 |
List Works V10.1以前で作成したユーザ作成ライブラリで使用する出口ルーチンについて、以下に示します。
ライブラリ名 | 格納場所 |
---|---|
lwlogin.dll ( 呼び出し規約 _cdecl ) | Windowsのシステム環境変数の「Path」に指定されているフォルダ |
出口ルーチンの関数定義、出口ルーチンで使用する構造体の形式を格納したヘッダファイルの格納場所は、以下のとおりです。
ファイル名 | 格納場所 |
---|---|
lwlogin.h | 「List Worksのインストール先フォルダ\Samples」フォルダ |
各出口ルーチンのインタフェースを説明します。
(1) ログイン出口のインタフェース
LW_LDAP_LoginExit関数のインタフェースを以下に示します。
int LW_LDAP_LoginExit (LOGIN_INDATA *lpIndata, LOGIN_OUTDATA *lpOutdata)
ログイン出口(LW_LDAP_LoginExit関数)は、リスト管理サーバへのログイン時に呼び出されます。出口ルーチンでは、入力パラメタとして渡されたログインユーザIDとパスワードから、ログインを許可するかどうかを判定します。許可する場合は、ユーザ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 Works 8.0以前に作成したログイン出口の互換用です。 | |
返却可能最大グループ数 | 返却可能最大グループ数が設定されます。初期値は20です。再度呼び出されたときは、LOGIN_OUTDATA構造体のoGroupNumで返却した値が設定されます。 | |
パスワード | パスワードが255バイト以内で設定されます。 |
注意
iPasswdはList Works 8.0以前に作成したログイン出口の互換用です。パスワードはiPasswdとiPasswordの両方に設定されますが、新規にログイン出口を作成する場合はiPasswordを参照してください。なお、パスワードが14バイトを超える場合はiPasswdには先頭の14バイトが設定されます。
LOGIN_OUTDATA構造体の内容を以下に示します。
typedef struct { LDAP_USER_INFO oUserInfo; /* ユーザ情報 */ int oGroupNum; /* 返却するグループ数(値を格納した数を設定する) */ LDAP_GROUP_INFO *oGroupInfo; /* ユーザが所属するグループ情報 */ } LOGIN_OUTDATA ;
LOGIN_OUTDATA構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
ユーザ情報 | ユーザ情報を設定します。 | |
返却するグループ数 | 返却するグループ数を1から255で設定します。 | |
ユーザが所属するグループ情報 | ユーザが所属するグループ情報を設定します。 |
LDAP_USER_INFO構造体の内容を以下に示します。
typedef struct { char oUid[40]; /* ユーザID(有効文字数26バイト) */ char oName[44]; /* ユーザ名(有効文字数40バイト) */ int oAdmin; /* 管理者権限 0:権限なし 1:権限あり */ long oAccessibility[4]; /* ユーザの業務権限 */ } LDAP_USER_INFO ;
LDAP_USER_INFO構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
ユーザID | ユーザIDを26バイト以内で設定します。 | |
ユーザ名 | リザーブです。NULLを設定してください。 | |
管理者権限 | 管理者権限の有無を、「0」か「1」で設定します。 0:権限なし 1:権限あり | |
ユーザの業務権限 | ユーザの業務権限をビットの論理和で設定します。 |
LDAP_GROUP_INFO構造体の内容を以下に示します。
typedef struct { char oGid[28]; /* グループID(有効文字数26バイト) */ char oName[44]; /* グループ名(有効文字数40バイト) */ long oAccessibility[4]; /* グループの業務権限 */ } LDAP_GROUP_INFO ;
LDAP_GROUP_INFO構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
グループID | ユーザが所属するグループIDを26バイト以内で設定します。 | |
グループ名 | リザーブです。NULLを設定してください。 | |
グループの業務権限 | グループの業務権限をビットの論理和で設定します。 |
ユーザ、グループの業務権限はそれぞれLDAP_USER_INFO構造体、LDAP_GROUP_INFO構造体のメンバであるlong型の配列oAccessibilityに、以下に示すビットの論理和を指定します。
例)すべての業務権限を指定する場合
oAccessibility[0]に「0xFFC7B7AB」、
oAccessibility[1]に「0x0007E1FF」、
oAccessibility[2]に「0x00000000」、
oAccessibility[3]に「0x00000000」、
を指定します。
注意
各機能に対する業務権限の有無は、以下のように決まります。
ユーザとユーザが所属するグループそれぞれに権限が与えられている場合に限り、その機能に対する権限が与えられます。
ユーザが複数のグループに所属している場合は、所属するグループの中で1つでも権限が与えられていて、かつユーザに権限が与えられている場合に限り、その機能に対する権限が与えられます。
管理者権限を持つユーザは、業務権限の指定に関係なくすべての権限が与えられます。
以下に示すビット以外の項目はすべて予約域となっています。
oAccessibility | 業務権限名 | 説明 | アクセス権 | |
---|---|---|---|---|
インデックス | ビットマスク | |||
0 | 0x00000001 | フォルダの作成 | 保管フォルダ配下にフォルダの作成を許可します。 | 保管フォルダ |
0 | 0x00000002 | フォルダの削除 | フォルダの削除を許可します。 | |
0 | 0x00000008 | フォルダの表示 | フォルダの表示を許可します。 | |
0 | 0x00000020 | 帳票の削除 | 帳票の削除を許可します。 | 保管フォルダ内の帳票 |
0 | 0x00000080 | 帳票情報の変更 | 帳票情報の変更を許可します。 | |
0 | 0x00000100 | 帳票一覧への表示 | 帳票の帳票一覧への表示を許可します。 | |
0 | 0x00000200 | ファイリング | 帳票のファイリングを許可します。 | |
0 | 0x00000400 | 帳票の表示 | 帳票の表示を許可します。 | |
0 | 0x00001000 | メール送信 | 帳票のメール送信を許可します。 | |
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 | 0x00000004 | PDF変換 | 帳票のPDF 形式への変換を許可します。 | |
1 | 0x00000008 | 帳票項目の保存 | 帳票に対して、帳票項目の保存を許可します。 | |
1 | 0x00000010 | 抜き出し検索範囲の設定 | 帳票に対して、抜き出し検索範囲の設定を許可します。 | |
1 | 0x00000020 | オーバレイ位置の設定 | 帳票に対して、オーバレイ位置の設定を許可します。 | |
1 | 0x00000040 | 印刷フォルダの表示 | 印刷フォルダの表示を許可します。 | 印刷フォルダ |
1 | 0x00000080 | 印刷フォルダ配下の帳票一覧表示 | 印刷フォルダ内配下の帳票一覧表示を許可します。 | |
1 | 0x00000100 | 印刷フォルダのプロパティ表示 | 印刷フォルダのプロパティ表示を許可します。 | |
1 | 0x00002000 | 印刷フォルダ内の帳票の表示 | 印刷フォルダ内の帳票の表示を許可します。 | 印刷フォルダ内の帳票 |
1 | 0x00004000 | 印刷フォルダ内の帳票のリモート印刷開始/中断/再開 | 印刷フォルダ内の帳票のリモート印刷制御(開始/中断/再開)を許可します。 | |
1 | 0x00008000 | 印刷フォルダ内の帳票の移動 | 印刷フォルダ内の帳票の移動を許可します。 | |
1 | 0x00010000 | 印刷フォルダ内の帳票の複写 | 印刷フォルダ内の帳票の複写を許可します。 | |
1 | 0x00020000 | 印刷フォルダ内の帳票の削除 | 印刷フォルダ内の帳票の削除を許可します。 | |
1 | 0x00040000 | 印刷フォルダ内の帳票の帳票情報の変更 | 印刷フォルダ内の帳票の帳票情報の変更を許可します。 |
0:正常終了(ログインを許可する)
-1:異常終了
1:指定されたユーザIDは存在しない。
2:指定されたユーザIDのパスワードの有効期限が切れている。
3:指定されたユーザIDが複数登録されている。
4:パスワードに誤りがある。
5:所属グループ数がiMaxReturnNoを超えている。
ユーザの所属グループが「返却可能最大グループ数(構造体LOGIN_INDATAのメンバiMaxReturnNo)」を超えるときは、復帰値に「5(所属グループ数がiMaxReturnNoを超えている)」を設定し、「返却するグループ数(構造体LOGIN_OUTDATAのメンバoGroupNum)」に所属グループ数を設定して復帰してください。この場合は、設定された所属グループ数分の返却領域を獲得しなおして、再度、本ログイン出口モジュールを呼び出します(ただし、現在のユーザ出口認証の仕様として、ユーザの所属できるグループ数の最大値は256グループまでとしています)。
LW_LDAP_GetDisplayCondition関数のインタフェースを以下に示します。
int LW_LDAP_GetDisplayCondition(LDAP_DISPLAY_OUTDATA *lpOutdata)
検索画面情報取得出口(LW_LDAP_GetDisplayCondition関数)は、管理者ツールのアクセス権設定画面などでユーザ一覧/グループ一覧を取得する際の、「ユーザまたはグループの選択」画面構築時に呼び出されます。
「ユーザまたはグループの選択」画面の「検索する項目」に表示する条件(属性項目名)を、出口ルーチンにより設定することができます。
出口ルーチンでは、ユーザ情報検索、およびグループ情報検索で指定可能な属性項目名を出力パラメタに設定して復帰してください。
本関数復帰時に指定するLDAP_DISPLAY_OUTDATAの構造体のアドレスが設定されています。
LDAP_DISPLAY_OUTDATA構造体の内容を以下に示します。
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;
LDAP_DISPLAY_OUTDATA構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
グループ検索用属性名の個数 | グループ検索用属性名の個数を1から10で設定します。 | |
グループ検索用属性名の配列 | グループ検索用属性名の配列を1から10で設定します。使用しない要素には、NULLを設定します。 | |
ユーザ検索用属性名の個数 | ユーザ検索用属性名の個数を1から10で設定します。 | |
ユーザ検索用属性名の配列 | ユーザ検索用属性名の配列を1から10で設定します。使用しない要素には、NULLを設定します。 |
LDAP_SEARCH_ATTR_NAME構造体の内容を以下に示します。
typedef struct { char fieldName[44]; /* 検索用属性名(有効文字列40バイト) */ } LDAP_SEARCH_ATTR_NAME;
LDAP_SEARCH_ATTR_NAME構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
検索用属性名 | 「ユーザまたはグループの選択」画面の「検索する項目」に表示する内容を40バイト以内で設定します。 |
0:正常終了
-1:異常終了
LW_LDAP_SearchGroup関数のインタフェースを以下に示します。
int LW_LDAP_SearchGroup(LDAP_SEARCH_INDATA *lpIndata, LDAP_SEARCH_OUTDATA *lpOutdata)
グループ情報検索出口(LW_LDAP_SearchGroup関数)は、管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面でグループを指定して検索した際に呼び出されます。出口ルーチンでは、入力パラメタとして渡された検索条件に該当するグループを検索し、検索でヒットしたグループのグループ情報を出力パラメタに設定して復帰してください。
本関数呼び出し時に設定されるLDAP_SEARCH_INDATAの構造体のアドレスが設定されています。
本関数復帰時に指定するLDAP_SEARCH_OUTDATAの構造体のアドレスが設定されています。
LDAP_SEARCH_INDATA構造体の内容を以下に示します。
typedef struct { int iEquationCount; /* 検索条件数(最大3個まで) */ int iConjunction; /* 検索条件の接続子(1:AND 2:OR) */ LDAP_SEARCH_CONDITION iConditions[3]; /* 検索条件 */ int iMaxReturnNo; /* 返却可能最大数 */ } LDAP_SEARCH_INDATA;
LDAP_SEARCH_INDATA構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
検索条件数 | 検索条件数を1から3が設定されます。 | |
検索条件の接続子 | 検索条件が複数ある場合に、接続子(AND/OR)が設定されます。 「ユーザまたはグループの選択」画面の「項目間の条件」で設定されます。 1:AND (かつ) 2:OR (または) | |
検索条件 | 検索条件が設定されます。 | |
返却可能最大数 | グループ情報、ユーザ情報の返却可能最大数が設定されます。 「ユーザまたはグループの選択」画面の「最大件数」で設定されます。 |
LDAP_SEARCH_CONDITION構造体の内容を以下に示します。
typedef struct { LDAP_SEARCH_ATTR_NAME iField; /* 検索する属性名 */ char iValue[44]; /* 検索する値(有効文字数40文字) */ int iOperator; /* 検索演算子(0:含む 1:先頭にある 2:含まない) */ } LDAP_SEARCH_CONDITION;
LDAP_SEARCH_CONDITION構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
検索する属性名 | 検索する属性名が設定されます。 「ユーザまたはグループの選択」画面の「検索する項目」で設定されます。 | |
検索する値 | 検索に使用する文字列が40バイト以内で設定されます。 「ユーザまたはグループの選択」画面の「検索する値」で設定されます。 | |
検索演算子 | 検索する値の比較条件が設定されます。 「ユーザまたはグループの選択」画面の「比較条件」で設定されます。 0:検索する値を含む 1:検索する値から始まる 2:検索する値を含まない |
LDAP_SEARCH_OUTDATA構造体の内容を以下に示します。
typedef struct { int oReturnCount; /* 返却数(値を格納した数を設定する) */ union { LDAP_GROUP_INFO *groups; /* グループ情報返却領域 */ /* (呼び出し元でiMaxReturnNoサイズを確保) */ LDAP_USER_INFO *users; /* ユーザ情報返却領域 */ /* (呼び出し元でiMaxReturnNoサイズを確保) */ } result; } LDAP_SEARCH_OUTDATA;
LDAP_SEARCH_OUTDATA構造体の各メンバの詳細を以下に示します。
メンバ | 名称 | 詳細 |
---|---|---|
返却数 | グループ情報、または、ユーザ情報の返却数を設定します。 LDAP_SEARCH_INDATA構造体のiMaxReturnNo以下の値を設定します。 | |
グループ情報返却領域 | 検索したグループ情報を設定します。 | |
ユーザ情報返却領域 | 検索したユーザ情報を設定します。 |
0:正常終了
1:検索結果が多すぎる。
-1:その他のエラー(LDAP関数のエラー)
検索したグループ情報は、グループ情報返却領域(構造体LDAP_SEARCH_OUTDATAのメンバresult.groups)に設定してください。
なお、グループ情報返却領域は、本関数の呼び出し時に返却可能最大数分の領域が獲得されています。返却可能最大数は、構造体LDAP_SEARCH_INDATAのメンバiMaxReturnNoに格納されていますので、検索結果が返却可能最大数を超える場合は、復帰値に「1(検索結果が多すぎる)」を設定して復帰してください。
LW_LDAP_SearchUser関数のインタフェースを以下に示します。
int LW_LDAP_SearchUser(LDAP_SEARCH_INDATA *lpIndata, LDAP_SEARCH_OUTDATA *lpOutdata)
ユーザ情報検索出口(LW_LDAP_SearchUser関数)は、管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面でユーザを指定して検索した際に呼び出されます。出口ルーチンでは、入力パラメタとして渡された検索条件に該当するユーザを検索し、検索でヒットしたユーザのユーザ情報を出力パラメタに設定して復帰してください。
本関数呼び出し時に設定されるLDAP_SEARCH_INDATAの構造体のアドレスが設定されています。
LDAP_SEARCH_INDATAの構造体は、“(3) グループ情報検索出口のインタフェース”で説明しています。
本関数復帰時に指定するLDAP_SEARCH_OUTDATAの構造体のアドレスが設定されています。
LDAP_SEARCH_OUTDATAの構造体は、“(3) グループ情報検索出口のインタフェース”で説明しています。
0:正常終了
1:検索結果が多すぎる。
-1:その他のエラー(LDAP関数のエラー)
検索したユーザ情報は、ユーザ情報返却領域(構造体LDAP_SEARCH_OUTDATAのメンバresult.users)に設定してください。
なお、ユーザ情報返却領域は、本関数の呼び出し時に返却可能最大数分の領域が獲得されています。返却可能最大数は、構造体LDAP_SEARCH_INDATAのメンバiMaxReturnNoに格納されていますので、検索結果が返却可能最大数を超える場合は、復帰値に「1(検索結果が多すぎる)」を設定して復帰してください。