すべてのリクエストをインターセプトし、許可された IP からのものであることを確認するレール用のカスタム ミドルウェアを作成しました。
これは現在、次のようになっています。
require 'net/http'
class AuthorizeEnvironment
def initialize(app)
@app = app
end
def call(env)
if AppConstants.approved_doximity_ips.include?(env["REMOTE_ADDR"])
@app.call(env)
elsif authorized?(env)
@app.call(env)
else
[403, {"Content-Type" => "text/html"}, ["Not Authorized on this environment."]]
end
end
def authorized?(env)
@auth ||= Rack::Auth::Basic::Request.new(env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['username', 'password']
end
end
このコードの問題は、ブラウザで http 認証ウィンドウをトリガーする方法が見つからないように見えることです。これを確認しましたが、これがどのように行われるかについての明確な兆候は見られませんでした。
正しい方向に向けてください。