cli ruby http authentication heroku

ruby - cli - ¿Hay alguna forma de configurar la autenticación HTTP simple para una aplicación en heroku?



heroku ssh (6)

Quiero configurar un servidor de ensayo privado en heroku usando autenticación HTTP simple. ¿Es eso posible?



Hay un buen complemento heroku que usa Mozilla Persona para la autenticación. Es gratis para sitios de bajo volumen (menos de 10,000 autenticaciones por mes):

https://addons.heroku.com/wwwhisper

Muy fácil de instalar y configurar.


Otra forma de hacerlo utilizando el application_controller.rb:

# app/controllers/application_controller.rb before_filter :http_basic_auth def http_basic_auth if ENV[''HTTP_AUTH''] =~ %r{(.+)/:(.+)} unless authenticate_with_http_basic { |user, password| user == $1 && password == $2 } request_http_basic_authentication end end end

y luego necesita exportar sus valores: para el desarrollo:

export HTTP_AUTH=test:test

Para heroku:

heroku config:set HTTP_AUTH=test:test

Ahora, cuando aparezca el mensaje de la ventana, debe ingresar para usuario / contraseña => prueba / prueba.

Eso es, espero que lo encuentres útil.


Respuesta actualizada para Rails 5:

config.middleware.use(Rack::Auth::Basic) do |u, p| [u, p] == ["user", "password"] end

Además, se ha señalado en la publicación de blog de Ole para utilizar ENV vars. Agregaría que una contraseña aleatoria es una buena idea en caso de que el env var no esté configurado:

config.middleware.use(Rack::Auth::Basic) do |u, p| [u, p] == [ENV[''USER''], ENV[''PASSWORD''] || SecureRandom.hex] end


Una manera más limpia es simplemente colocar un par de líneas de middleware Rack en la configuración del entorno de ensayo, dejando solo la lógica del controlador:

# config/environments/staging.rb MyApp::Application.configure do config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p| [u, p] == [''username'', ''password''] end #... other config end

Este consejo es cortesía de Ole Morten Amundsen. Más información más especificación de contraseña Heroku:

http://olemortenamundsen.wordpress.com/2011/04/05/ruby-secure-staging-environment-of-your-public-app-from-users-and-bots/


Absolutamente. La solución más simple es simplemente poner algo en su controlador de aplicación que use el soporte básico de autenticación incorporado de Rails (vea aquí: http://railscasts.com/episodes/82-http-basic-authentication ) y simplemente envolverlo en un condicional para tus Rails.env . Tenga en cuenta que en Heroku, de forma predeterminada, RAILS_ENV está configurado para producción, pero puede cambiarlo para sus aplicaciones que no sean de producción utilizando heroku config ( http://docs.heroku.com/config-vars ).

También podría considerar instalar algún middleware Rack de estilo roadblock, pero simplemente seguiría con lo anterior.