[Perl]Net::LDAPを使ったEntry追加

PerlのCPANモジュール、Net::LDAPを使ってEntryを追加しようとしたら’no values for attribute type’というエラーにハマってしまったので備忘録。

前提:

      LDAPサーバー(OpenLDAP)へのBINDはSimple Bind
      追加するのはposixAccount
      オリジナルobjectClassでAuthorizedHostという属性を追加して、このAuthorizedHostに記述のあるホストにはアクセス可能という制御をしている。
      AuthorizedHostという属性は複数設定可能。
      受け取った結果はJSONで返す

Web画面から新しいOSユーザーを作るという画面を作るためにサーバーサイド側のプログラムをPerlで記述した。
この時にAuthorizedHostをJSONの配列で受け取るようにしていたのだが、その値が空であることをWeb画面側で許していたため、空である場合に”no values for attribute type”で返ってきてしまった。

よって、最終的には以下のようにAuthorizedHostの値を確認した上で、エントリー追加後にAuthorizedHostの値のみ追加するような処理にした。(エラーやバリデーション処理については省いています。)

そもそもNet::LDAPの実装としてattrsを配列でなく、ハッシュで受け取るようにして、値がない場合、どの属性に値がないかを返してくれたらもっと時間かからずに済んだなと思った次第。

[Perl]Net::LDAPを使ったEntry追加」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です