Kazuho's Weblog: H2O version 1.7.0-beta1 released with enhanced mruby scripting, CGI, and much more

H2O version 1.7.0-beta1 からは htpasswd も使える Basic 認証のサポートが入ったので、以下のようなコードは最早必要ありません。

現時点だと h2o に Basic Auth の機能が入ってなさそうなので mruby.handler で雑に書く

        mruby.handler: |
          USER = "tsun", PASS = "dere"
          lambda do |env|
            auth = env['HTTP_AUTHORIZATION']
            if auth
              method, cred = *auth.split(' ')
              if method == "Basic"
                user, pass = cred.unpack("m")[0].split(':')
                if user == USER && pass == PASS
                  return [ 399, {}, [] ]
                end
              end
            end
            [ 401, { 'Content-Type' => 'text/plain', 'WWW-Authenticate' => 'Basic realm="Restricted"' }, [ 'Authorization Required' ] ] 
          end 

これをかけたいとこに書けば basic auth がかかる。

最初 htpasswd 読むようにしようとしたが mruby に String#crypt はなかったのでやめた。

  1. トップ
  2. tech
  3. h2o で Basic Auth