rails:3234
From: しん <dezawa@a...>
Date: Fri, 02 Oct 2009 17:22:35 +0900 (JST)
Subject: [rails:3234] LDAPユーザ認証でのパスワード隠蔽方法
出沢です この話題はRoRからははずれ気味ですが、この場にはWebアプリに強い方が沢山 いらっしゃるであろうことと、解決はRoRで行いたいこともあり、ここで相談 させていただきます。 申請システムを作っています。ユーザ認証にRestfull-authenticationを使いました。 システム上権限を持つ人の管理はローカルのmodel Userでやるのはやむをえないの ですが、一般ユーザの認証はLDAPで行いたく、ruby-ldap を利用して改造しました。 一通り動いたのですが、セキュリティ上不安な問題に気がつきました。 それはLDAPの生のパスワードを手に入れることができてしまうということです。 生のパスワードを知ることなしに、LDAPでの認証を行う方法がありましたら教えて ください。 LDAP認証は bind(dn,password) が例外を出さなければ成功 と判断しています。 LDAPサーバは社の事情から MSのActiveDirectoryサーバと(メーカ、商品名未確認な) CorporateDirectoryの2系統があり、次の優先順で問い合わせています。 CDに問い合わせ ⇒ ADに問い合わせ ⇒ model Userに問い合わせ Webの画面は Restfull をinstall したときに作られる views/sessions/new を 手直しして使っています。 LDAPへの問い合わせは枝葉を取ると以下です。 conn = LDAP::Conn.new(server, 389) conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3) begin # CDはパスワード無しを通してしまう raise 49 if password.blank? conn.bind(dn,password) rescue => evar # 失敗の型を返す必要あるか? あったらflashするか、 return nil end パスワードと dn作成のための uid はRestfullのオリジナルのままです。 すなわち、views/sessions/new から sessions_controller/create に渡り そこで User.authenticate(params[:login], params[:password]) で渡されます。 環境は Rails 2.3.2、Ruby1.8.7、LinuxRH9 です。 よろしくお願いします -- ML: rails@r... 使い方: http://QuickML.com/
-> 3234 2009-10-02 10:22 [dezawa@a... ] LDAPユーザ認証でのパスワード隠蔽方法 3239 2009-10-07 05:22 ┗[bsdmad@g... ] 3242 2009-10-07 07:52 ┗[dezawa@a... ]