ダイジェスト認証
「ユーザーがパスワードを変更できるようにする Web アプリ。」
WebDAV や、WebDAV+Subversion のサービスを提供するにあたって、ダイジェスト認証環境を作った。そこ後、ユーザーが自分でパスワードを変更できるようにするために、即席で作ったのがこのツール。パスワードを変更するだけの単純な機能しかないが、まあ、誰かの役に立つこともあるだろう…。
- index.rb
# ダイジェスト認証用パスワード変更 Web アプリ # ダイジェスト認証後に使われることが前提 require 'cgi' require 'webrick' include WEBrick # ファイル名、レルムを設定して使用する。 $DIGEST_FILE = '.ht_digest' $REALM = 'anything' $status = nil # パスワード変更 cgi = CGI.new if cgi['submit'] == 'change' htd = HTTPAuth::Htdigest.new($DIGEST_FILE) htd.set_passwd($REALM, cgi.remote_user, cgi['password']); htd.flush $status = "Changed!" end # HTML 生成 cgi.out() do str = <<EOS <html> <head> <link rel="stylesheet" type="text/css" href="base.css" /> <title>Password changer</title> </head> <body> <h2>#{$status}</h2> <h1>Password changer</h1> <form method="post" action="."> <dl> <dt>Account</dt> <dd>#{cgi.remote_user}</dd> <dt>New password</dt> <dd><input name="password" type="password" /></dd> </dl> <input type="submit" name="submit" value="change" /> </form> </body> </html> EOS end
- base.css
body { margin:1cm; } h1 { border-bottom-style: solid; border-bottom-width: 1px; } h2 { color:red; } dt, dd { margin:1mm; padding:2mm; float:left; } dt { background-color:silver; width:20%; } dd { width:70%; }