ページの先頭行へ戻る
Interstage List Works V11.0.0 環境構築手引書
FUJITSU Software

2.6.2 出口ルーチンの準備 <ユーザ作成ライブラリによる認証の場合>

List Worksのユーザ認証に、ユーザ作成ライブラリによる認証を利用する場合は、ユーザ認証や保管フォルダのアクセス権の判断に出口ルーチンを利用して認証処理を行っています。そのため、ディレクトリサービスなどを利用する場合は、以下のユーザ作成ライブラリの出口ルーチンを作成しておく必要があります。出口ルーチンは、文字のコード系をEUC(U90)で作成してください。

注意

ユーザ作成ライブラリによる認証でユーザ認証する運用において、ユーザ認証が60秒以内に完了しない場合、タイムアウトと判断され、ログインに失敗する場合があります。ユーザ認証が60秒以上の時間がかかっていないか確認し、かかる場合は認証処理、およびネットワーク環境を見直してください。

出口ルーチン

関数名

概要

ログイン出口

LW_LDAP_LoginExit

リスト管理サーバへのログイン時に呼び出されます。

検索画面情報取得出口

LW_LDAP_GetDisplayCondition

管理者ツールのアクセス権設定画面などでユーザ一覧/グループ一覧を取得する際の、「ユーザまたはグループの選択」画面構築時に呼び出されます。

呼び出された結果、「検索する項目」に条件(属性項目名)が設定されます。

グループ情報検索出口

LW_LDAP_SearchGroup

管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面で、グループを指定して【検索】ボタンをクリックした際に呼び出されます。

その結果、条件にあったグループが一覧に表示されます。

ユーザ情報検索出口

LW_LDAP_SearchUser

管理者ツールでアクセス権設定時に、「ユーザまたはグループの選択」画面で、ユーザを指定して【検索】ボタンをクリックした際に呼び出されます。

その結果、条件にあったユーザが一覧に表示されます。

出口ルーチンのライブラリ名と格納場所は、以下のとおりです。

ライブライリ名

格納場所

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とパスワードから、ログインを許可するかどうかを判定します。許可する場合は、ユーザ名などのユーザ情報と、そのユーザが所属するグループ情報を出力パラメタに設定して復帰してください。


パラメタの説明
lpIndata

本関数呼び出し時に設定されるLOGIN_INDATAの構造体のアドレスが設定されています。

lpOutdata

本関数復帰時に指定するLOGIN_OUTDATAの構造体のアドレスが設定されています。


LOGIN_INDATA構造体

LOGIN_INDATA構造体の内容を以下に示します。

typedef  struct  
{
    char     iUid[40];             /* ログインユーザID(有効文字数26バイト)    */
    char     iPasswd[16];          /* パスワード(有効文字数14バイト)          */
    int      iMaxReturnNo;         /* 返却可能最大グループ数                    */
    char     iPassword[256];       /* パスワード(有効文字数255バイト)           */
} LOGIN_INDATA ;

LOGIN_INDATA構造体の各メンバの詳細を以下に示します。

メンバ

名称

詳細

iUid

ログインユーザID

リストナビなどのログイン画面で指定したユーザIDが26バイト以内で設定されます。

iPasswd

パスワード

リストナビなどのログイン画面で指定したパスワードが14バイト以内で設定されます。List WorksV10.4以前に作成したログイン出口の互換用です。

iMaxReturnNo

返却可能最大グループ数

返却可能最大グループ数が設定されます。初期値は20です。再度呼び出されたときは、LOGIN_OUTDATA構造体のoGroupNumで返却した値が設定されます。

iPassword

パスワード

リストナビなどのログイン画面で指定したパスワードが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構造体

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

帳票のリモート印刷

帳票のリモート印刷を許可します。
「帳票の表示」、「印刷フォルダのプロパティ表示」の権限も必要です。(注1)

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)

印刷フォルダ内の帳票

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)

機能

「ユーザまたはグループの選択」画面の構築時に呼び出されます。

出口ルーチンでは、ユーザ情報検索、およびグループ情報検索で指定可能な属性項目名を出力パラメタに設定して復帰してください。


パラメタの説明
lpOutdata

本関数復帰時に指定するLDAP_DISPLAY_OUTDATAの構造体のアドレスが設定されています。


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)

機能

グループ情報の検索時に呼び出されます。

出口ルーチンでは、入力パラメタとして渡された検索条件に該当するグループを検索し、検索でヒットしたグループのグループ情報を出力パラメタに設定して復帰してください。


パラメタの説明
lpIndata

本関数呼び出し時に設定されるLDAP_SEARCH_INDATAの構造体のアドレスが設定されています。

lpOutdata

本関数復帰時に指定するLDAP_SEARCH_OUTDATAの構造体のアドレスが設定されています。


LDAP_SEARCH_INDATA構造体

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構造体

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)

機能

ユーザ情報の検索時に呼び出されます。

出口ルーチンでは、入力パラメタとして渡された検索条件に該当するユーザを検索し、検索でヒットしたユーザのユーザ情報を出力パラメタに設定して復帰してください。


パラメタの説明
lpIndata

本関数呼び出し時に設定されるLDAP_SEARCH_INDATAの構造体のアドレスが設定されています。

lpOutdata

本関数復帰時に指定するLDAP_SEARCH_OUTDATAの構造体のアドレスが設定されています。


LDAP_SEARCH_INDATA構造体

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構造体

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(検索結果が多すぎる)」を設定して復帰してください。