しばらく前に、趣味コーディングの題材としてだいたい動きそうに思えるところまで書いてあった、mrubyでPAMな認証処理を書けるようにするlibpam-mrubyというのがあったのですが、その後手をつけられずにいたところ、udzuraさんがいい感じにしてくれていた。
詳しくは、上記の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から叩いて、その結果を元に認証するとかですかね。
どうぞご利用ください。