CFNTAUTHENTICATE | |||
説明
ColdFusion サーバーが稼動している Windows NT ドメインに対してユーザー名とパスワードを認証し、必要に応じてユーザーのグループを取り出します。 |
|||
カテゴリ
セキュリティタグ | |||
シンタックス<cfNTauthenticate username="username" password="password" domain="nt_domain" result="result variable" listGroups = "yes"、"no" throwOnError = "yes"、"no"> |
|||
関連項目
cflogin、cfloginuser、IsUserInRole、GetAuthUser |
|||
ヒストリ
ColdFusion MX 7: このタグが追加されました。
|
|||
使用方法
この関数を使用して、Windows NT ドメインに対してユーザーを認証し、必要に応じてユーザーのグループを取得します。この関数は、Microsoft Active Directory ディレクトリサービスでは機能せず、UNIX システムおよび Linux システムでは何も実行しません。通常は、後の例に示すように、このタグを cflogin タグ内で使用して cfloginuser タグに対してユーザーを認証します。
result 属性で指定された構造体には、次の情報が格納されています。
このタグは、認証の処理について、ステータス確認および例外処理という 2 つのモデルを提供します。throwOnError 属性が No の場合は、結果変数の auth フィールドと status フィールドを使用して、ユーザーが認証されたかどうかを確認します。認証されなかった場合は、認証失敗の原因を確認します。throwOnError 属性が Yes の場合、ユーザーが無効のときに ColdFusion では例外エラーが発生します。その場合は、try/catch エラー処理を使用します。catch ブロックでは、あらゆる認証の失敗を処理します。 |
|||
例
次の例では、auth フィールドと status フィールドを使用して、ユーザーが認証されるかどうかおよびエラーが発生するかどうかを確認します。同じディレクトリに置いた次の 3 つのファイルで構成されています。
ログイン処理の詳細については、『ColdFusion MX 開発ガイド』を参照してください。この例の詳細については、コード内のコメントを参照してください。 次のページを cfntauthenticateexample.cfm として保存します。この例を実行するには、ブラウザまたは IDE からこのページをリクエストします。 <!--- Application.cfm ページです。ユーザーがこのページをリクエストする たびに処理されます。最初にログインする必要があります。 ---> <cfoutput> <h3>Welcome #GetAuthUser()#</h3> <!--- ユーザーログアウトへのリンクです。 ---> <a href="#CGI.script_name#?logout=Yes">Log Out</a> </cfoutput> 次のページを loginform.cfm として保存します。 <!--- ログインのリクエストがあったページに返される、シンプルなログインフォーム です。 ---> <H2>ログインしてください</H2> <cfform action="#CGI.script_name#"> <!--- j_username と j_password は cflogin タグ変数の挿入を行う特別な 名前です。 ---> ユーザー名 : <cfinput type="text" name="j_username" value="cfqa_user1" required="Yes"><br> パスワード : <cfinput type="password" name="j_password" value="cfqa_user1" required="Yes"><br> ドメイン : <cfinput type="text" name="domain" value="rnd" required="Yes"><br> <input type="submit" value="ログイン"> </cfform> 次のページを Application.cfm として保存します。 <!--- ユーザーがログアウトリンクをクリックしたことに応答してこのページが実行されている場合、 ユーザーをログアウトします。cflogin タグのコードが実行されます。 ---> <cfif IsDefined("URL.logout") AND URL.logout> <cflogout> </cfif> <!--- ユーザーがログインしていない場合に限り、cflogin 本文のコードが実行されます。 ---> <cflogin> <!--- ログイン証明情報が使用可能な場合に限り、cflogin 変数が存在します。 ---> <cfif NOT IsDefined("cflogin")> <!--- ログインのリクエストがあったページに返されるログインフォームを 示します。このページの残りの部分は処理しません。 ---> <cfinclude template="loginform.cfm"> <cfabort> <cfelse> <!--- フォームで送信されたユーザー名とパスワードから前後のスペースを 削除します。 ---> <cfset theusername=trim(form.j_username)> <cfset thepassword=trim(form.j_password)> <cfset thedomain=trim(form.domain)> <cfntauthenticate username="#theusername#" password="#thepassword#" domain="#thedomain#" result="authresult" listgroups="yes"> <!--- ユーザーが認証されると、authresult.auth は true になります。 ---> <cfif authresult.auth> <!--- ユーザーを ColdFusion にログインし、ロールをユーザーのグループに設定します。 ---> <cfloginuser name="#theusername#" password="#thepassword#" roles="authresult.groups"> <cfelse> <!--- ユーザーは認証されませんでした。 エラーメッセージとログインフォームが表示されます。 ---> <cfoutput> <cfif authresult.status IS "AuthenticationFailure"> <!--- ユーザーは有効ですが、パスワードは無効です。 ---> <H2>#theusername# のパスワードが正しくありません<br> もう一度入力してください</H2> <cfelse> <!--- もう 1 つのステータス値、無効なユーザー名があります。 ---> <H2>ユーザー名 #theusername# は無効です<br> もう一度入力してください</H2> </cfif> </cfoutput> <cfinclude template="loginform.cfm"> <cfabort> </cfif> </cfif> </cflogin> |
NAME | |
必須 | |
ユーザーのログイン名です。 |
PASSWORD | |
必須 | |
ユーザーのパスワードです。 |
DOMAIN | |
必須 | |
ユーザーを認証する対象のドメインです。ColdFusion J2EE サーバーはこのドメインで稼動している必要があります。 |
RESULT | |
オプション | |
Default value: "cfntauthenticate"
結果を返す変数の名前です。 |
LISTGROUPS | |
オプション | |
Default value: "No"
ユーザーのグループをカンマで区切りで示すリストを結果の構造体に含めるかどうかを指定するブール値です。 |
THROWONERROR | |
オプション | |
Default value: "No"
認証が失敗したときに例外が発生するかどうかを指定するブール値です。この属性が Yes の場合、ユーザー名またはパスワードが無効のときは ColdFusion ではエラーが発生します。このアプリケーションでは、try/catch ブロックまたは ColdFusion エラーハンドラページでこうしたエラーを処理する必要があります。 |
AUTH | |
ユーザーを認証するかどうかを指定します。 | |
Yes | |
No | |
GROUPS | |
指定されたドメイン内のユーザーのグループを示すカンマ区切りのリストです。listGroups 属性が Yes の場合、構造体にはこのフィールドだけが含まれます。 | |
NAME | |
ユーザー名です。タグの name 属性と同じです。 | |
STATUS | |
認証のステータスです。次のいずれかです。 | |
success | |
UserNotInDirFailure: ユーザーはディレクトリに存在しません。 | |
AuthenticationFailure: ユーザーはディレクトリに存在しますが、パスワードが無効です。 | |