|
|
|
|
http://wota.jp/ac/?date=20060521#c 神キターーー!!
/ヽ /ヽ / ヽ / ヽ / ヽ__/ ヽ ┏┓ ┏━━┓ / \ .┏━┓ ┏┛┗┓┃┏┓┃ / \ / | .┃ ┃ ┗┓┏┛┃┗┛┃┏━| > < |━┓┃ ┃ ┏┛┗┓┃┏┓┃┃ |. (__人__) | ┃┃ ┃ ┗┓┏┛┗┛┃┃┗━ヽ \/ / ━┛┗━┛ ┃┃ ┃┃ / \ ┏━┓ ┗┛ ┗┛ /  ̄ ̄ヽ / ̄ ヽ .┗━┛ .ヽ_______/ \__/
ありがとう大地、ありがとう太陽、ありがとうぴーちっち、素晴らしいプラグインをどうもありがとう。そうか、Basic認証にしてしまえばいいのか!完璧です。望み通りです。あまりに出来がよく実用的なので、
しました。(あと後半ばっさり)。
从*’w’)<ということで、舞波が作った Htpasswd Plugin だよ!
ruby script/plugin install http://wota.jp/svn/rails/plugins/branches/stable/htpasswd
class AdminController < ApplicationController
htpasswd :user=>"maiha" , :pass=>"berryz"
htpasswd :user=>"saki" , :pass=>"7Et1Y7tCawx32", :type=>:crypted
htpasswd :file=>"/usr/local/apache/passwd/.htpasswd"
end |
Apache 運用時に public の .htaccess でやっちゃうと一部のコントローラだけ認証かけるのが出来なくて困ってたんですよ。うん、これは便利だ。あとは、
夢は膨らみますなー!さすが舞波!!
∬ ∫ ノハヽヽ <・・・誰が作ったって? ~━⊂(か わ) つ-、 ☆ノノハヽ /// /_/:::::/ 从:;;;) w’) |:::|/⊂ヽノ|:::| /」 (_U_U / ̄ ̄旦 ̄ ̄ ̄/| /______/ | | ス、スミマセン | |-----------|
| JRuby | Rails | Berryz | ℃-ute | エッグ | jQuery |
| 前 | 2006年 5月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
コード添削とテスト追加乙です。お役に立てたようで何よりです。<br>とくにプラグインのテストの書き方がよくわからなかったので参考になりました〜(というかテストのほうが長いし)舞波乙!
はじめまして。ヲタ界部外者、まじめ一本槍で生きてきた者です。<br>Rails 2.0.2(Windows)上で、Htpasswd Plugin を使わせて頂こうという安易な気持ちを抱いたの<br>ですが、<br> htdigest :file => ".htpasswd"<br>でIE7やFirefoxたちが認証を受け付けてくれないのは私の気のせいでしょうか?<br>付属のテストは成功しているようで、認証用ファイルも<br>Htpasswd::Auths::Digest.new(:user => user_name, :pass => password).entry<br>でエントリを生成し、テスト用ファイルと見比べてなんの落ち度もないように思うのですが。。<br><br>もし「同じ条件でもうまくやってますけど、なにか?」という方がいらっしゃれば自力本願で<br>頑張ってみます。
分かりました。<br>htpasswd/lib/htpasswd/auths/digest.rb<br>def a2<br> ‥‥<br>end<br>の中で使われている「uri」の値がまずいようです。<br>私のような環境だと<br> http:// 〜 /app_name/controller/action?param=xxx<br>のようなURLなので、クライアントからは<br> uri="/app_name/controller/action?param=xxx"<br>でGETしてくるわけですが、上記uriは<br> uri="/controller/action"<br>となっていますね。。
それはなぜなら、<br>Htpasswd::Auths::Digest.parse() で options[:uri] に正しい値が入っても、<br>Htpasswd::Auths::Digest.set_controller() で上書きされてしまうからに他ならないようです。
PARAMETER_VALID_KEY_MAPPINGS = {<br> ‥‥<br> :uri => :req_uri,<br> ‥‥<br>}<br>にして<br>def req_uri<br> options[:req_uri] ||= '/'<br>end<br>を追加して<br>def a2<br> digest_algorithm.hexdigest([method, req_uri] * ":")<br>end<br>としたら上手く動いているようですが、こんなんでいいんでしょうか。。?<br><br>オープンソースのグループウェアThetisのRSSの認証にこれ、使わせて頂こうと思ってます。。<br>http://sysphonic.com/thetis/<br><br># これで「別途Apacheからhtpasswdをゲットしてください」なんていう<br># 意味不明なマニュアルともおさらばだっ!ありがとう、ぴーちっち!
>>IE7やFirefoxたちが認証を受け付けてくれないのは私の気のせいでしょうか?<br><br>IEのDigest認証には有名なバグ(URIのクエリ文字列の部分を無視する)があり、さらにMSもずっと放置したままだったので長年みんなが困っていたのですが、例に漏れずhtpasswdでもIEを取るかその他の正しい挙動のブラウザを取るかという二択を迫られることとなり、シェアを重視というか、その時の自分の顧客がたまたまIEが必須だったという恥ずかしい理由でhtpasswdではIE用のDigest認証の挙動になりました。<br><br>htpasswdの対応はそんな感じで大丈夫だと思います。そして、その場合、IE6では動かなくなるはずです。で、今回逆に、IE7で動かなくなったということは、いよいよMSが対応してくれたっぽいですね。よくやったMS!これで万々歳!と思ったら、結局IE6がいきなり駆逐される事はないので、事態は変わらず。みたいなねぇ。困ったものです。やっぱり両タイプのアルゴリズムを実装してブラウザで判別するのがいいかな?ぴーちっち
Rails 2.0.2には標準でBasic認証機能があるけど、それだとダメですか?<br>3の倍数とRailsの話題のときにアホになるので外してたらごめん。
げげっっ、マジですかっ?本当だ。。<br>Digest認証はまだだけど、ってことですね。(ていうか我ながらなんたる不勉強。。)<br>まあRails仕様に振り回されるのも癪だったりするし、選択肢があるのはどっちにしても良いこと<br>ですけどね。<br># Thetisのようなアプリだとセキュリティ強化のためにはどっちみちSSLかまさないといけないから<br># Basicでも可なのか、う〜ん‥‥<br><br> それとは別に一つ問題が。ファイル指定だと現状コントローラのロード時にエントリを読み込む<br>だけなので、ユーザ情報変更ありのアプリだとファイル更新しても認証に反映されないんですよね。。<br>(自分で修正したのですがたぶんあまり良いやり方じゃないと思いますので一応ご報告まで)<br><br>P.S. あと、IE6でもだいじょうVみたいです。