Sinatra のドキュメントを見たところ、HTTP 認証のみを参照しているようです。LDAPサーバーを介して承認/認証されているユーザーに基づいて、ルートへのアクセスを制御する非常に簡単な方法を探しています。
LDAP ビットを実行し、ユーザーが正常に認証された場合は LDAP オブジェクトを返し、そうでない場合は nil を返すクラスを既に作成しました。
>>DirectoryUser.authenticate('user', 'password')
#<DirectoryUser:0x007ffb589a2328>
これを使用して、認証に成功したかどうかを判断できます。
次のステップとして、LDAP ユーザーとパスワードを収集するためのフォームを提供するシンプルな Sinatra アプリにこれをつなぎ合わせたいと思います。
require 'directoryUser'
require 'sinatra'
enable :sessions
get '/form' do
username = params[:username]
password = params[:password]
haml :form
end
次に、「DirectoryUser」オブジェクトが存在する場合にのみルートを許可します。
get '/protected' do # Only if DirectoryUser object exists
"This route is protected"
end
get '/unprotected' do
"This route is unprotected"
end
これに対する答えを見つけるのに何時間も費やしましたが、これまでのところ、自分に合ったものを見つけることができないようです.