Delegate で Proxy 認証

Delegate で Proxy 認証を試したときのメモ

Basic 認証

ユーザー名とパスワードをファイルに保存する方法

ユーザー名とパスワードの対をファイルに保存。hostname のところは適当な名前で大丈夫だと思う。

# ./delegated -P8080 -Fauth -a user:pass -hostname

Delegate 起動。先ほど入力した hostname を AUTHORIZER として使う。

# ./delegated -P8080 ADMIN=webmaster@www.redout.net SERVER=http AUTH=proxy:pauth PERMIT="*:*:*" AUTHORIZER=-hostname

ユーザー名とパスワードをファイルに保存しない方法

# ./delegated -P8080 ADMIN=webmaster@www.redout.net SERVER=http AUTH=proxy:pauth PERMIT="*:*:*" AUTHORIZER=-list{user:pass}
-P8080 8080 番ポートで動かす
SERVER=http HTTP プロキシーとして動かす
AUTH=proxy:pauth HTTP プロキシーサーバーとして Delegate を動かすときの認証方法を指定。
pauth は Proxy-Authorization フィールドを使う指定。
PERMIT="*:*:*" アクセス制限はしない。PERMIT をつけないと AUTH=proxy:pauth が無効になるので注意。
AUTHORIZER=-list{user:pass} 認証に使うユーザー名(user)とパスワード(pass)のペア。

実際のやりとり

ブラウザーのリクエスト サーバーのレスポンス

GET http://www.redout.net/ HTTP/1.1
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)
Host: www.redout.net
Proxy-Connection: Keep-Alive
HTTP/1.1 407 Proxy Authentication Required
Date: Wed, 02 Nov 2005 02:48:03 GMT
Server: DeleGate/8.9.6
Delegate-Ver: 8.9.6 (delay=0)
MIME-Version: 1.0
Content-Type: text/html
Content-Length: 100
Proxy-Connection: close
Proxy-Authenticate: Basic Realm="proxy"

Not Authorized: GET http://www.redout.net/ HTTP/1.1
<BR>
<B>Proxy Authorization</B> required.<P>
GET http://www.redout.net/ HTTP/1.1
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)
Host: www.redout.net
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic dGVzdDp0ZXN0
HTTP/1.1 200 OK
Delegate-Ver: 8.9.6 (delay=0)
Date: Wed, 02 Nov 2005 02:56:46 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7e PHP/4.3.11
Last-Modified: Fri 20 May 2005 23:17:30 GMT
ETag: "3c01fa-387-428e700a"
Accept-Ranges: bytes
Content-Type: text/html; charset=shift_jis
Via: 1.1 - (DeleGate/8.9.6)
Proxy-Connection: Keep-alive, timeout=50, maxreq=60
Content-Length: 903

......(BODY)

Digest 認証

ユーザー名とパスワードの対を暗号化してファイルに保存する。暗号化のためのキーワードを入力する必要がある。

# ./delegated -Fauth -a user:pass -dgauth
**** Specify the key of encryption for 'dgauth'
**** CRYPT=pass:keyword

Delegate 起動する。キーワードを聞かれるので先ほど入力したものを入れる。

# ./delegate -P8080 ADMIN=webmaster@www.redout.net SERVER=http AUTH=proxy:pauth PERMIT="*:*:*" AUTHORIZER=-dgauth
**** Specify the key of encryption for 'dgauth'
**** CRYPT=pass:keyword

実際のやりとり

ブラウザーのリクエスト サーバーのレスポンス

GET http://www.redout.net/ HTTP/1.1
Host: www.redout.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
HTTP/1.1 407 Proxy Authentication Required
Date: Wed, 02 Nov 2005 02:48:03 GMT
Server: DeleGate/8.11.5
Delegate-Ver: 8.11.5 (delay=0)
MIME-Version: 1.0
Content-Type: text/html
Content-Length: 100
Proxy-Connection: keep-alive, timeout=50, maxreq=60
Proxy-Authenticate: Digest Realm="-", nonce="NzEuYWRkMjg2MzQuYjEwOWVjNmU4MTBhNTA0M2YyZTFhNGFlOGEyY2VmMzg=", opaque="003DCADF8C43A0D15FC4EFE530D114CE", qop="auth"

Not Authorized: GET http://www.redout.net/ HTTP/1.1
<BR>
<B>Proxy Authorization</B> required.<P>
GET http://www.redout.net/ HTTP/1.1
Host: www.redout.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Proxy-Authorization: Digest username="user", realm="-", nonce="NzEuYWRkMjg2MzQuYjEwOWVjNmU4MTBhNTA0M2YyZTFhNGFlOGEyY2VmMzg=", uri="/", response="484f0fdf67cd9ac492566f56c5102b2d" opaque="003DCADF8C43A0D15FC4EFE530D114CE", qop=auth, nc=00000001, cnonce="145a7df2f8cebe62f381a5af4b9c2b66"
HTTP/1.1 200 OK
Delegate-Ver: 8.11.5 (delay=0)
Date: Wed, 02 Nov 2005 02:56:46 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7e PHP/4.3.11
Last-Modified: Fri 20 May 2005 23:17:30 GMT
ETag: "3c01fa-387-428e700a"
Accept-Ranges: bytes
Content-Type: text/html; charset=shift_jis
Via: 1.1 - (DeleGate/8.11.5)
Proxy-Connection: keep-alive, timeout=50, maxreq=60
Content-Length: 903

......(BODY)

いまいち dgauth の使い方がわからなかったが、Ethereal でパケットを見たところ Digest 認証にはなっていた。


Valid XHTML 1.0 Strict Valid XHTML 1.0 Strict

戻る