[前][次][番号順一覧][スレッド一覧]

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...         ]