Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

libpam-mrubyによりmrubyでLinuxのログイン認証をする

しばらく前に、趣味コーディングの題材としてだいたい動きそうに思えるところまで書いてあった、mrubyでPAMな認証処理を書けるようにするlibpam-mrubyというのがあったのですが、その後手をつけられずにいたところ、udzuraさんがいい感じにしてくれていた。

github.com qiita.com

詳しくは、上記のudzuraさんのエントリをご覧くださいという感じなのですが、ここでも少し書いておきます。

PAMの設定にこんなのを追加しておく(UNIXアカウント認証をするモジュール(pam_unix.so)の前とかに)。

auth sufficient pam_mruby.so rbfile=/path/to/auth.rb

んでもって、一番簡単な認証としては、こんな感じ(もちろん実用的ではありません)。

def authenticate(username, password)
  if username == 'kentaro' && password == 'p@ssw0rd'
    true
  else
    false
  end
end

authenticate(username, password) というメソッドを定義しておくと、それが呼ばれます(この辺はあとで変えるかも)。

この例だとなにがうれしいのかわからないかもしれませんが、実用的な応用としては、外部のアカウントや権限管理サービスをmrubyから叩いて、その結果を元に認証するとかですかね。

どうぞご利用ください。