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 タグに対してユーザーを認証します。

メモ: ColdFusion は、指定されたドメイン内の他のユーザーを認証する権限があるユーザーとして実行する必要があります。

result 属性で指定された構造体には、次の情報が格納されています。

このタグは、認証の処理について、ステータス確認および例外処理という 2 つのモデルを提供します。throwOnError 属性が No の場合は、結果変数の auth フィールドと status フィールドを使用して、ユーザーが認証されたかどうかを確認します。認証されなかった場合は、認証失敗の原因を確認します。throwOnError 属性が Yes の場合、ユーザーが無効のときに ColdFusion では例外エラーが発生します。その場合は、try/catch エラー処理を使用します。catch ブロックでは、あらゆる認証の失敗を処理します。

 

次の例では、auth フィールドと status フィールドを使用して、ユーザーが認証されるかどうかおよびエラーが発生するかどうかを確認します。同じディレクトリに置いた次の 3 つのファイルで構成されています。

  • メインの cfntauthexample.cfm ページ。ユーザーが認証された場合にそのユーザー名を表示します。ログアウトリンクを含んでいます。
  • ログインフォームページ。ユーザーがログインしていない場合に表示されます。
  • Application.cfm ページ。ログイン、認証、およびログアウトのすべての処理コードを含んでいます。

ログイン処理の詳細については、『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: ユーザーはディレクトリに存在しますが、パスワードが無効です。