説明
Netscape Directory Server などの LDAP (Lightweight Directory Access Protocol) ディレクトリサーバーへのインターフェイスを提供します。
カテゴリ
シンタックス
<cfldap action = "action" server = "server name" attributes = "attribute, attribute" delimiter = "delimiter character" dn = "distinguished name" filter = "filter" maxRows = "number" modifyType = "replace|add|delete" name = "name" password = "password" port = "port number" rebind = "yes|no" referral = "number of allowed hops" returnAsBinary = "column name, column name" scope = "scope" secure = "multifield security string" separator = "separator character" sort = "attribute[, attribute]..." sortControl = "nocase|desc|asc" start = "distinguished name" startRow = "row number" timeout = "milliseconds" username = "user name" clientcert = "path to client certificate" clientcertpassword = "password for the client certificate" usetls = "true|false">
このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。
関連項目
cfftp、cfhttp、cfmail、cfmailparam、cfpop、『ColdFusion アプリケーションの開発』の LDAP ディレクトリの管理
履歴
ColdFusion 11:clientcert、clientcertpassword および usetls という 3 つの新しい属性が追加されました。 filterFile 属性が削除されました。
ColdFusion 8:returnAsBinary 属性で変数のリストを指定するときに、区切り文字としてコンマを使用できるようになりました。例えば、returnAsBinary="objectGUID,objectSID" のように指定できます。以前は、区切り文字として使用できるのは空白のみでした。ColdFusion MX 7:returnAsBinary 属性が追加されました。SSL V2 クライアントベースの認証が可能になり、ColdFusion で CFSSL_CLIENT_AUTH オプションがサポートされるようになりました。CFSSL_CLIENT_AUTH が選択されている場合、ColdFusion は cacerts(認証データベース)の最初の証明書にクライアント証明書が格納されているものと想定します。ColdFusion MX:
- name 属性の動作が変更されました。このタグでは、name 属性のクエリ名が検証されます。
- ソートの動作が変更されました。このタグでは、クライアントサイドでのクエリ結果のソートがサポートされません。サーバーサイドでのソートはサポートされています(sort および sortcontrol 属性を使用します)。
- 結果のソート方法が変更されました。サーバーサイドのソート結果は、ColdFusion 5 の場合と少し異なります。ソートがサポートされていないサーバーに対してソートを実行しようとすると、ColdFusion MX でエラーが発生します。
- filterConfig 属性および filterFile 属性は非推奨になりました。これらの属性は今後のリリースでは機能せず、エラーが発生する可能性があります。
属性
属性 |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
action |
必須 |
query |
|
サイドで使用 |
必須 |
|
LDAP サーバーのホスト名または IP アドレスです。 |
attributes |
action = "Query"、"Add"、"ModifyDN"、または "Modify" の場合は必須 |
|
クエリの場合は、取得したい属性のカンマ区切りリストを指定します。クエリの場合、すべての属性を取得するには "*" を指定します。action = "add" または "modify" の場合は、更新する列のリストを指定できます。属性をセミコロンで区切って指定します。action = "ModifyDN" の場合は、シンタックスチェックを行わずに属性がそのまま LDAP サーバーに渡されます。 |
delimiter |
オプション |
; (セミコロン) |
属性の名前と値のペアの区切り文字です。この属性は次の場合に使用します。
|
dn |
action = "Add"、"Modify"、"ModifyDN" または "delete" の場合は必須 |
|
update アクションの識別名です。例 : "cn = Bob Jensen, o = Ace Industry, c = US" |
filter |
オプション |
"objectclass = *" |
action = "query" の場合の検索条件です。属性を "(attribute operator value)" という形式でリストします。例:"(sn = Smith)" |
maxRows |
オプション |
|
LDAP クエリに含まれるエントリの最大数です。 |
modifyType |
オプション |
置換 |
複数値リスト内で属性を処理する方法を指定します。
|
name |
action = "Query" の場合は必須 |
|
LDAP クエリの名前です。このタグは、この値を検証します。 |
password |
secure = "CFSSL_BASIC" の場合は必須 |
|
ユーザー名に対応するパスワードです。secure = "CFSSL_BASIC" の場合、V2 によりパスワードが送信前に暗号化されます。 |
port |
オプション |
389 |
ポートです。 |
rebind |
オプション |
no |
|
referral |
オプション |
|
整数。リファラルで許可されるホップの数です。値を 0 に設定すると、LDAP 用の参照アドレスが無効になります。したがって、データは返されません。 |
returnAsBinary |
オプション |
|
バイナリ値として返される列の空白区切りリストです。 |
scope |
オプション |
oneLevel |
action = "Query" の場合に、start 属性に指定したエントリからどこまでを検索スコープにするかを指定します。
|
secure |
オプション |
|
使用するセキュリティと、必要な情報です。この属性を指定する場合、値は次のいずれかである必要があります。
|
separator |
オプション |
, (カンマ) |
複数の値を持つ属性の、属性値の区切り文字です。query、add、modify アクションにより、また、cfldap により、複数の値を持つ属性を出力するために使用されます。例えば、$ (ドル記号) に設定すると、attributes 属性に "objectclass = top$person" という値を指定できます。この場合、objectclass の最初の値は top に、2 番目の値は person になります。これにより、値にカンマが含まれる場合の混乱を回避します。 |
sort |
オプション |
|
クエリ結果をソートする際の基準にする属性です。カンマ区切りで指定します。 |
sortControl |
オプション |
asc |
|
start |
action = "Query" の場合は必須 |
|
検索を開始するために使用するエントリの識別名です。 |
startRow |
オプション |
1 |
action = "query" とともに使用します。ColdFusion クエリに挿入する LDAP クエリの最初の行です。 |
timeout |
オプション |
60000 |
LDAP 処理の最大待機時間をミリ秒単位で指定します。 |
username |
secure = "CFSSL_BASIC" の場合は必須 |
(匿名) |
ユーザー ID です。 |
clientcert | オプション | クライアント証明書が含まれているキーストアファイルへの絶対パスです。 | |
clientcertpassword | オプション | クライアント証明書のパスワードです。 | |
usetls | オプション | true/false | 通常の LDAP ポートを介して SSL を開始する際に startTls 拡張子を使うかどうかを指定します。 |
使用方法
query アクションを使用すると、cfldap によってクエリオブジェクトが作成されるため、次のようにしてクエリ変数の情報にアクセスできます。
変数名 |
説明 |
---|---|
queryname.recordCount |
クエリによって返されるレコードの数です。 |
queryname.currentRow |
cfoutput が現在処理しているクエリの行です。 |
queryname.columnList |
クエリの列名です。 |
security="CFSSL_BASIC" オプションを使用した場合、ColdFusion は、サーバーの証明書と ColdFusion で使用される JRE の jre/lib/security/cacerts キーストア内の情報とを比較することで、サーバーを信頼するかどうかを判断します。ColdFusion のデフォルトの cacerts ファイルには、数多くの認証機関についての情報が含まれています。このファイルに情報を追加して更新する必要がある場合は、ColdFusion の jre/bin ディレクトリにある keytool ユーティリティを使用して、X.509 形式の証明書をインポートできます。例えば、次の行を入力します。
keytool -import -keystore cacerts -alias ldap -file ldap.crt -keypass bl19mq
次に ColdFusion を再起動します。キーツールユーティリティの初期の keypass パスワードは、「change it」です。キーツールユーティリティの詳細については、Sun JDK のマニュアルを参照してください。ColdFusion では無効な文字が、LDAP の属性名に使用されていることがあります。結果として、cfldap タグが作成するクエリ結果セットの中に、CFML でアクセスできない無効な文字を含む名前の列が含まれる可能性があります。ColdFusion では、無効な文字は自動的にアンダースコア文字にマッピングされます。したがって、クエリ結果セットの列名は LDAP 属性の名前とは正確には一致しない場合があります。
使用例については、『ColdFusion アプリケーションの開発』を参照してください。
Windows のみ
負荷が大きく、 cfldap でエラーが発生する場合は、一時 TCP ポートがすべて使用中の可能性があります。したがって、新しいクライアント接続リクエストに新しいポートを割り当てることはできません。
この問題を解決するには、レジストリエディターを開き、レジストリサブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters を見つけて、下記の新しいエントリを追加します。
- 値の名前:MaxUserPort
- 値の種類:DWORD
- 値のデータ:65534
例
<h3>cfldap の例</h3> <p>LDAP ディレクトリサーバーにインターフェイスを提供します。例は University of Connecticut public LDAP サーバーを使用します。その他の公開 LDAP サーバーについては、<a href="http://www.emailman.com">http://www.emailman.com</a> を参照してください。</p> <p>名前を入力して公開 LDAP リソースを検索します。 名前の前後のアスタリスクはワイルドカードとして機能します。</p> <! ---名前が存在する場合、フォームは送信され、クエリが実行されています。---> <cfif IsDefined("form.name")> <! ---リストされている名前があることを確認します。---> <cfif form.name is not ""> <! --- LDAP クエリを作成します。---> <cfldap server = "ldap.uconn.edu" action = "query" name = "results" start = "dc=uconn,dc=edu" filter = "cn=#name#" attributes = "cn,o,title,mail,telephonenumber" sort = "cn ASC"> <! ---結果を表示します。---> <center> <table border = 0 cellspacing = 2 cellpadding = 2> <tr> <th colspan = 5> <cfoutput>#results.recordCount# matches found </cfoutput></TH> </tr> <tr> <th><font size = "-2">Name</font></TH> <th><font size = "-2">Organization</font></TH> <th><font size = "-2">Title</font></TH> <th><font size = "-2">E-Mail</font></TH> <th><font size = "-2">Phone</font></TH> </tr> <cfoutput query = "results"> <tr> <td><font size = "-2">#cn#</font></td> <td><font size = "-2">#o#</font></td> <td><font size = "-2">#title#</font></td> <td><font size = "-2"> <A href = "mailto:#mail#">#mail#</A></font></td> <td><font size = "-2">#telephonenumber#</font></td> </tr> </cfoutput> </table> </center> </cfif> </cfif> <form action="#cgi.script_name#" method="POST"> <p>名前を入力してデータベースで検索します。</p> <input type="Text" name="name"> <input type="Submit" value="Search" name=""> </form>
ldap modifyDN(操作の名前変更)を使用して、エントリをツリー内のあるポイントから別のポイントに移動できます。例えば、以下のシナリオを参照してください。
- (ツリー内で)エントリの RDN を修正するには、属性の引数にキー値ペアとして値を持つ新しい RDS 属性を指定します。
<cfldap action="modifyDN" attributes="cn=Accounting Officers" dn="cn=QA Managers,ou=Groups,dc=example, dc=com" server="localhost" port="10389" username="uid=admin,ou=system" password ="Password@123" >
- エントリを完全に別の ldap ツリーに移動するには、属性の引数に targetDN を指定して、エントリを新しい場所に移動します。
<cfldap action="modifyDN" attributes="cn=Accounting Managers,ou=Special Users,dc=example,dc=com" dn="cn=Accounting Managers,ou=Groups,dc=example, dc=com" server="localhost" port="10389" username="uid=admin,ou=system" password ="Password@123" >