cfldap

説明

Netscape Directory Server などの LDAP (Lightweight Directory Access Protocol) ディレクトリサーバーへのインターフェイスを提供します。

カテゴリ

シンタックス

<cfldap 
action = &quot;action&quot; 
server = &quot;server name&quot; 
attributes = &quot;attribute, attribute&quot; 
delimiter = &quot;delimiter character&quot; 
dn = &quot;distinguished name&quot; 
filter = &quot;filter&quot; 
maxRows = &quot;number&quot; 
modifyType = &quot;replace|add|delete&quot; 
name = &quot;name&quot; 
password = &quot;password&quot; 
port = &quot;port number&quot; 
rebind = &quot;yes|no&quot; 
referral = &quot;number of allowed hops&quot; 
returnAsBinary = &quot;column name, column name&quot; 
scope = &quot;scope&quot; 
secure = &quot;multifield security string&quot; 
separator = &quot;separator character&quot; 
sort = &quot;attribute[, attribute]...&quot; 
sortControl = &quot;nocase|desc|asc&quot; 
start = &quot;distinguished name&quot; 
startRow = &quot;row number&quot; 
timeout = &quot;milliseconds&quot; 
username = &quot;user name&quot;
clientcert = &quot;path to client certificate&quot;
clientcertpassword = &quot;password for the client certificate&quot;
usetls = &quot;true|false&quot;>
注意:

このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。

関連項目

cfftpcfhttpcfmailcfmailparamcfpop、『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

  • query:LDAP エントリ情報のみを返します。name、start、および attributes 属性が必要です。
  • add:LDAP エントリを LDAP サーバーに追加します。attributes 属性が必要です。
  • modify:LDAP サーバー上で LDAP エントリを修正します (識別名 dn 属性は除く)。dn 属性が必要です。modifyType 属性を参照してください。
  • modifyDN:LDAP サーバー上で LDAP エントリの識別名属性を修正します。dn 属性が必要です。
  • delete:LDAP サーバー上の LDAP エントリを削除します。dn 属性が必要です。

サイドで使用

必須

 

LDAP サーバーのホスト名または IP アドレスです。

attributes

action = "Query"、"Add"、"ModifyDN"、または "Modify" の場合は必須

 

クエリの場合は、取得したい属性のカンマ区切りリストを指定します。クエリの場合、すべての属性を取得するには "*" を指定します。action = "add" または "modify" の場合は、更新する列のリストを指定できます。属性をセミコロンで区切って指定します。action = "ModifyDN" の場合は、シンタックスチェックを行わずに属性がそのまま LDAP サーバーに渡されます。

delimiter

オプション

; (セミコロン)

属性の名前と値のペアの区切り文字です。この属性は次の場合に使用します。

  • attributes 属性で複数の項目を指定する場合。
  • 属性には、デフォルトの区切り文字(セミコロン)が含まれます。例:mgrpmsgrejecttext;lang-en
    query、add、modify アクションにより、また、cfldap により、複数の値を持つ属性を出力するために使用されます。例えば、$ (ドル記号) の場合、"cn = Double Tree Inn$street = 1111 Elm; Suite 100 のように指定できます。ここでは、セミコロンは番地名の一部です。

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

オプション

置換

複数値リスト内で属性を処理する方法を指定します。

  • add:指定された属性を既存の属性に追加します。
  • delete:属性のセットから属性を削除します。
  • replace:属性を、指定された属性に置き換えます。
    既に存在する属性や空の属性を追加することはできません。

name

action = "Query" の場合は必須

 

LDAP クエリの名前です。このタグは、この値を検証します。

password

secure = "CFSSL_BASIC" の場合は必須

 

ユーザー名に対応するパスワードです。secure = "CFSSL_BASIC" の場合、V2 によりパスワードが送信前に暗号化されます。

port

オプション

389

ポートです。

rebind

オプション

no

  • yes:リファラルコールバックの再バインドを試み、元の認証情報を使用して、参照アドレスでクエリを再発行します。
  • no:参照接続は匿名です。

referral

オプション

 

整数。リファラルで許可されるホップの数です。値を 0 に設定すると、LDAP 用の参照アドレスが無効になります。したがって、データは返されません。

returnAsBinary

オプション

 

バイナリ値として返される列の空白区切りリストです。

scope

オプション

oneLevel

action = "Query" の場合に、start 属性に指定したエントリからどこまでを検索スコープにするかを指定します。

  • oneLevel:1 つ下のレベルにあるエントリ
  • base:そのエントリのみ
  • subtree:エントリとその下の全レベル

secure

オプション

 

使用するセキュリティと、必要な情報です。この属性を指定する場合、値は次のいずれかである必要があります。

  • CFSSL_BASIC - V2 SSL の暗号化とサーバー認証が可能になります。
  • CFSSL_CLIENT_AUTH - CFLDAP タグとクライアント証明書ベースの認証を使用する場合、この値は必須です。これは、

    clientcert および clientcertpassword とともに使用します。

     

separator

オプション

, (カンマ)

複数の値を持つ属性の、属性値の区切り文字です。query、add、modify アクションにより、また、cfldap により、複数の値を持つ属性を出力するために使用されます。例えば、$ (ドル記号) に設定すると、attributes 属性に "objectclass = top$person" という値を指定できます。この場合、objectclass の最初の値は top に、2 番目の値は person になります。これにより、値にカンマが含まれる場合の混乱を回避します。

sort

オプション

 

クエリ結果をソートする際の基準にする属性です。カンマ区切りで指定します。

sortControl

オプション

asc

  • nocase:大文字と小文字を区別しないでソートします。
  • asc:大文字と小文字を区別し、昇順(a から z へ)でソートします。
  • desc:大文字と小文字を区別し、降順(z から a へ)でソートします。
    sortControl = "nocase, 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=&quot;http://www.emailman.com&quot;>http://www.emailman.com</a> を参照してください。</p> 
<p>名前を入力して公開 LDAP リソースを検索します。  
名前の前後のアスタリスクはワイルドカードとして機能します。</p> 
<! ---名前が存在する場合、フォームは送信され、クエリが実行されています。---> 
<cfif IsDefined(&quot;form.name&quot;)> 
	<! ---リストされている名前があることを確認します。---> 
	<cfif form.name is not &quot;&quot;> 
		<! --- LDAP クエリを作成します。---> 
		<cfldap  
			 server = &quot;ldap.uconn.edu&quot; 
			 action = &quot;query&quot; 
			 name = &quot;results&quot; 
			 start = &quot;dc=uconn,dc=edu&quot; 
			 filter = &quot;cn=#name#&quot; 
			 attributes = &quot;cn,o,title,mail,telephonenumber&quot; 
			 sort = &quot;cn ASC&quot;> 
		<! ---結果を表示します。---> 
		<center> 
		<table border = 0 cellspacing = 2 cellpadding = 2> 
			<tr> 
				<th colspan = 5> 
					<cfoutput>#results.recordCount# matches found </cfoutput></TH> 
			</tr> 
			<tr> 
				<th><font size = &quot;-2&quot;>Name</font></TH> 
				<th><font size = &quot;-2&quot;>Organization</font></TH> 
				<th><font size = &quot;-2&quot;>Title</font></TH> 
				<th><font size = &quot;-2&quot;>E-Mail</font></TH> 
				<th><font size = &quot;-2&quot;>Phone</font></TH> 
			</tr> 
			<cfoutput query = &quot;results&quot;> 
				<tr> 
					<td><font size = &quot;-2&quot;>#cn#</font></td> 
					<td><font size = &quot;-2&quot;>#o#</font></td> 
					<td><font size = &quot;-2&quot;>#title#</font></td> 
					<td><font size = &quot;-2&quot;> 
						<A href = &quot;mailto:#mail#&quot;>#mail#</A></font></td> 
					<td><font size = &quot;-2&quot;>#telephonenumber#</font></td> 
				</tr> 
			</cfoutput> 
			</table> 
			</center> 
		</cfif> 
</cfif> 
 
<form action=&quot;#cgi.script_name#&quot; method=&quot;POST&quot;> 
	<p>名前を入力してデータベースで検索します。</p> 
	<input type=&quot;Text&quot; name=&quot;name&quot;> 
	<input type=&quot;Submit&quot; value=&quot;Search&quot; name=&quot;&quot;> 
</form>
注意:

ldap modifyDN(操作の名前変更)を使用して、エントリをツリー内のあるポイントから別のポイントに移動できます。例えば、以下のシナリオを参照してください。

  • (ツリー内で)エントリの RDN を修正するには、属性の引数にキー値ペアとして値を持つ新しい RDS 属性を指定します。
<cfldap action=&quot;modifyDN&quot; attributes=&quot;cn=Accounting Officers&quot; dn=&quot;cn=QA Managers,ou=Groups,dc=example,
dc=com&quot; server=&quot;localhost&quot; port=&quot;10389&quot; username=&quot;uid=admin,ou=system&quot; password
=&quot;Password@123&quot; >
  • エントリを完全に別の ldap ツリーに移動するには、属性の引数に targetDN を指定して、エントリを新しい場所に移動します。
<cfldap action=&quot;modifyDN&quot; attributes=&quot;cn=Accounting Managers,ou=Special Users,dc=example,dc=com&quot; 
dn=&quot;cn=Accounting Managers,ou=Groups,dc=example,
dc=com&quot; server=&quot;localhost&quot; port=&quot;10389&quot; username=&quot;uid=admin,ou=system&quot; password
=&quot;Password@123&quot; >
アドビのロゴ

アカウントにログイン