最終更新日: 2014年1月13日
Squid Home / Index

ディレクティブ: auth_param

これはSquidで様々な認証スキームを使うための定義に使用されます。
以前の名前:
動作条件: --enable-auth
デフォルト値: none
提案された設定:
#Recommended minimum configuration per scheme:
#auth_param negotiate program <uncomment and complete this line to activate>
#auth_param negotiate children 20 startup=0 idle=1
#auth_param negotiate keep_alive on
#
#auth_param ntlm program <uncomment and complete this line to activate>
#auth_param ntlm children 20 startup=0 idle=1
#auth_param ntlm keep_alive on
#
#auth_param digest program <uncomment and complete this line>
#auth_param digest children 20 startup=0 idle=1
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#
#auth_param basic program <uncomment and complete this line>
#auth_param basic children 5 startup=5 idle=1
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours

形式: auth_param scheme parameter [setting]

クライアントエージェントへの認証プロンプトの順はconfigファイルへのスキームの記述順に依存します。
IEはバグ(rfc 2617に準拠していない)があり、スキームとしてより安全なスキームを使うようにしてもベーシック認証を最初に使ってしまいます。今のところ、ファイル中でのオーダーの設定は下の方で定義してください。
他のブラウザでも問題が出る場合(あなたが使用を提示されたスキームを認識しない上、BASIC認証を使うなら)BASICを最初に指定するか、他のスキーマを無効にしてください。(それには、プログラムのエントリをコメントとします)

認証スキームの設定に変更を行った場合には、それを利用するためにはSquidを一度シャットダウンして再起動してください。

このディレクティブの定義によってSquidがどのように認証を処理するかを定義しているますが、それが自動的に認証を活性化しないことに注意してください。
認証を使用するために、あなたさらに更に http_access(proxy_auth、proxy_auth_regex、あるいは 外部の%LOGONのフォーマットタグを含む)の中で、ログイン名のACLの使用を使用します。
ブラウザは、最初に http_access処理の中で遭遇したそのようなaclの上の認証に挑戦し、リクエストが proxy_auth タイプのaclによって否定されれば、新しいログイン認証情報で再挑戦されるでしょう。

警告:
認証は透過プロキシ(transparently intercepting proxy)では利用できません。 それはクライアントとオリジナルサーバとで行われます。
この制限はポート80晩を使う透過プロキシのTCP/IPプロトコルの制約で、Squidの制限ではありません。
ポートに対し'transparent', 'intercept', または 'tproxy' のフラグが立てられた場合、認証を無効になります。

================= 基本認証(basic)スキームのためのパラメーター =================
"program" cmdline
"program" は外部認証のためのコマンドを指定してください。 そのようなプログラムは、"username password"を含んでいるラインを読み、3つのうちの一つで返答します。
OK
ユーザは存在します。
ERR
ユーザが存在しません。
BH
ヘルパーにて内部エラーが発生しました。識別結果が得られません。
'ERR' または 'BH' には、結果コードの後にエラー・ページの%mとして利用可能な記述としてmessage="..."を含んだ任意のメッセージが続くかもしれません。

認証を使用する場合は、proxy_authを含んだ1つ以上の acl を持っていることを確認してください。

デフォルトの場合でも、プログラムが指定されなければBASIC認証スキームは使用されません。

あなたが従来のNCSAプロキシ認証のように使用したい場合には、以下のような行をセットことになるでしょう。

auth_param basic program /usr/local/squid/libexec/basic_ncsa_auth /usr/local/squid/etc/passwd
"utf8" on|off
HTTPは文字セットとしてiso-latin-1を使用します、一方、LDAPのようないくつかの認証のバックエンドではUTF-8を期待します。
これがセットされた場合、Squid上でのヘルパーからのユーザ名 & パスワードのHTTPの転送でiso-latin-1 キャラクタセットを UTF-8 に変換するでしょう。


"children" numberofchildren [startup=N] [idle=N] [concurrency=N]

numberofchildren は生成される認証プロセスの最大数。
もしSquidの開始においてこれらを余り与えなかった場合、プロセスの処理のために認証が待たされることになるだろう。
とても遅いネットワークからパスワードの認証を行うなら、多くの認証プロセスが必要になるでしょう。

startup= と idle= オプションは起動するスキューをどのくらいにするかの正確な量です。
startup=Nが開始時およびリコンフィグの際の最低数となります。
Squidはトラフィックにより上限まで必要になるまで、アイドル状態のプロセスがidle=N の状態になるようにするでしょう。

concurrency= オプション・セットはヘルパーが同時にリクエストの処理をする数です。
デフォルトは 0 で、ヘルパーは単一時間に1つのリクエストを処理します。
これを 0 以上にセットするならば、リクエスト/応答は同時にヘルパーに処理されるようになり、

プロトコルに使われるチャネルの数で、これを 0 以上にセットするならば、リクエスト/応答は同時にヘルパーに処理されるようになり、多数のリクエストがレスポンスを待たずに済むことでしょう。 なお、ヘルパーがこれをサポートするようになっていないならセットされてはならない。
auth_param basic children 20 startup=0 idle=1
"realm" realmstring
BASICプロキシ認証スキーム(ユーザ名とパスワードを求める際に表示される)によって、クライアントに表示されるリルム名(注:タイトルみたいのもの)を指定します。
デフォルトはありません。

auth_param basic realm Squid proxy-caching web server
"credentialsttl" timetolive
Squidが有効になったユーザー名:パスワードをどれくらいの時間有効とするか、- 言いかえれば、ヘルパープログラムは、どれくらい頻繁にそのユーザのために呼ばれるか。これを小さくした場合、パスワードの生存は短くなり再確認を強要します。 
注意: 大きくセットした場合、(SecureIDのような)ワン・タイムパスワード・システムを使用していなければ、リプレーアタック(replay attacks)に対する感受性がなくなります。
もし、そのようなシステムを使用して、もしさらに http_access 規則の中で max_user_ip ACLを使用しなければ、リプレーアタックに弱いでしょう。
"casesensitive" on|off
ユーザー名が大文字・小文字を区別するかどうかを明示します。ほとんどのユーザー・データベースは大文字・小文字を区別せず、大文字でも小文字でも同じユーザ名として利用できること可能にしています。しかし、幾つかのケースでは区別をしています。これは user_max_ip ACL での大きな差をを処理させるに類似しています。

auth_param basic casesensitive off
=========== ダイジェスト認証(digest)スキームの為のパラメータ ===========
"program" cmdline
認証のための外部コマンドを指定してください。
そのようなプログラムは、"username":"realm" を含んでいる行を読み、3つのうちの1つで結果を返します:
OK ha1="..."
ユーザは存在します。 ha1=キーは義務的で、16進化された適切なH(A1)の値を含んでいます。
H(A1)の定義については、rfc 2616を参照してください。
ERR
ユーザが存在しません。
BH
ヘルパーにて内部エラーが発生しました。識別結果が得られません。
'ERR' または 'BH' には、結果コードの後にエラー・ページの%mとして利用可能な記述としてmessage="..."を含んだ任意のメッセージが続くかもしれません。

認証を使用する場合は、proxy_authを含んだ1つ以上の acl を持っていることを確認してください。

デフォルトの場合でも、プログラムが指定されなければダイジェスト(digest)認証スキームは使用されません。

もしあなたがダイジェスト認証を必要とするのであれば、以下のような行をセットしてください。

auth_param digest program /usr/local/squid/bin/digest_pw_auth /usr/local/squid/etc/digpass
"children" numberofchildren [startup=N] [idle=N] [concurrency=N]
numberofchildren は生成される認証プロセスの最大数。(デフォルト 5)
もしSquidの開始においてこれらを余り与えなかった場合、H(A1)計算のために認証が待たされることになるだろう。
とても遅いネットワークからH(A1)計算を行うなら、多くの認証プロセスが必要になるでしょう。

startup= と idle= オプションは起動するスキューをどのくらいにするかの正確な量です。
startup=Nが開始時およびリコンフィグの際の最低数となります。
Squidはトラフィックにより上限まで必要になるまで、アイドル状態のプロセスがidle=N の状態になるようにするでしょう。

concurrency= オプション・セットはヘルパーが同時にリクエストの処理をする数です。
デフォルトは 0 で、ヘルパーは単一時間に1つのリクエストを処理します。
これを 0 以上にセットするならば、リクエスト/応答は同時にヘルパーに処理されるようになり、

プロトコルに使われるチャネルの数で、これを 0 以上にセットするならば、リクエスト/応答は同時にヘルパーに処理されるようになり、多数のリクエストがレスポンスを待たずに済むことでしょう。 なお、ヘルパーがこれをサポートするようになっていないならセットされてはならない。

auth_param digest children 20 startup=0 idle=1
"realm" realmstring
ダイジェスト認証スキーム(ユーザ名とパスワードを求める際に表示される)によって、クライアントに表示されるリルム名(注:タイトルみたいのもの)を指定します。デフォルトはありません。

auth_param digest realm Squid proxy-caching web server
"nonce_garbage_interval" timeinterval
指定された間隔で nonce は client_agent に送られ、有効性があるかチェックされます。
"nonce_max_duration" timeinterval
与えられた nonce が有効である最大の時間を指定する。
"nonce_max_count" number
与えられた nonce が利用できる最大の回数を指定する。
"nonce_strictness" on|off
Squid が nonce カウントを厳密に1づつとするのか、off すなわち、時々1でない値(例えば 1,2,4,6)でカウントするかを指定する。デフォルトは off.
"check_nonce_count" on|off
このディレクティブで off をセットすることで nonce カウントを使わないようにし、主流ブラウザーの中にあるダイジェスト認証の qop 処理の実装にバグの多い (buggy)ものに対処します。デフォルトは on で nonce カウントをチェックし、認証における Repay攻撃を防御します。
"post_workaround" on|off
これは、GETリクエストで以前に得られるのと同じ nonce を再使用する場合、POSTリクエストで正しくないリクエスト要約を送るバグの多いブラウザの場合、onにすることで対応を行います。

================= NTLMスキームのためのパラメーター =================
"program" cmdline
NTLM認証のための外部コマンドを指定します。
このようなプログラムはSquidとブラウザとの間でNTLMSSPパケットを読み込み、認証を完了完了させます。
もし、NTLM認証を使用するなら proxy_auth を含んだ1つ以上の acl を持っていることを確認してください。 デフォルトでは NTLM 認証プログラムを使っていません。

auth_param ntlm program /usr/bin/ntlm_auth

"children" numberofchildren [startup=N] [idle=N] [concurrency=N]

numberofchildren は生成される認証プロセスの最大数。 (デフォルトは 5)
もしSquidの開始においてこれらを余り与えなかった場合、プロセスの処理のために認証が待たされることになるだろう。
とても遅いネットワークからパスワードの認証を行うなら、多くの認証プロセスが必要になるでしょう。

startup= と idle= オプションは起動するスキューをどのくらいにするかの正確な量です。
startup=Nが開始時およびリコンフィグの際の最低数となります。
Squidはトラフィックにより上限まで必要になるまで、アイドル状態のプロセスがidle=N の状態になるようにするでしょう。

auth_param ntlm children 20 startup=0 idle=1
"keep_alive" on|off
もし、認証スキームの調停ににおける PUT/POSTリクエストに失敗するような場合には、この値をoffにして試すことができます。
これは、プロキシがサポートするスキームをブラウザが尋ねるとき、Squidでの初期リクエストにて接続を強制的にクローズします。

auth_param ntlm keep_alive on

================= NEGOTIATE認証スキームのオプション =================

"program" cmdline
Negotiate認証のための外部コマンドを指定してください。
このプロトコルでは、Microsoft Active-Directoryが有効としてセットアップされた環境でのMicrosoft Internet ExplorerとMozilla Firefox ブラウザで使われます。
その主な目的は、Kerberosのメカニズムを使用しSquidプロキシで認証情報を交換することです。
もし、Negotiate認証を使用する場合は、proxy_authを含んだ1つ以上の acl を持っていることを確認してください。
デフォルトではNegotiate認証プログラムは使われません。
この役割をサポートしている唯一つのプログラムは、バージョン4以降のSambaの一部として分配されたntlm_authプログラムです。

auth_param negotiate program /usr/bin/ntlm_auth --helper-protocol=gss-spnego
"children" numberofchildren [startup=N] [idle=N]

numberofchildren は生成される認証プロセスの最大数。 (デフォルトは 5)
もしSquidの開始においてこれらを余り与えなかった場合、プロセスの処理のために認証が待たされることになるだろう。
とても遅いネットワークからパスワードの認証を行うなら、多くの認証プロセスが必要になるでしょう。

startup= と idle= オプションは起動するスキューをどのくらいにするかの正確な量です。
startup=Nが開始時およびリコンフィグの際の最低数となります。
Squidはトラフィックにより上限まで必要になるまで、アイドル状態のプロセスがidle=N の状態になるようにするでしょう。

auth_param negotiate children 20 startup=0 idle=1
"keep_alive" on|off
もし、認証スキームの調停ににおける PUT/POSTリクエストに失敗するような場合には、この値をoffにして試すことができます。
これは、プロキシがサポートするスキームをブラウザが尋ねるとき、Squidでの初期リクエストにて接続を強制的にクローズします。

auth_param negotiate keep_alive on

Topへ戻る

Copyright© 1998-2014 ROBATA.ORG