authentication - online - heroku python
¿Cómo puedo mantener mi aplicación Heroku privada? (7)
Ahora también puede usar un complemento de Heroku que le permite especificar los correos electrónicos de los usuarios a los que se les permite acceder a una aplicación y que usa Persona (también conocido como BrowserID) para autenticar usuarios (no se necesita una contraseña específica del sitio).
¿Hay alguna manera de que pueda mantener mi aplicación completamente privada y solo dejar que los desarrolladores tengan acceso?
Cuando un usuario aleatorio ingresa la URL, debe ser algo así como una página en blanco, pero cuando los desarrolladores ingresan la URL, deben poder acceder a la aplicación.
Echa un vistazo a la gema de authlogic, en particular la característica Token de acceso único.
Puede devolver un 404 a cualquiera que no pase el token de acceso único apropiado como argumento.
Mi solución (también económica) (la aplicación Django que usa vistas basadas en clases) es usar SuperUserRequiredMixin
en todas mis vistas basadas en clases como esta:
class BlogPostDetailView(SuperuserRequiredMixin, DetailView):
template_name = "blogpost-detail.html"
model = BlogPost
Agregar / eliminar esta mixin es mi manera de hacerlo.
Mi solución barata ha estado implementando un before_filter para solicitar una autenticación HTTP antes de que se ejecute cada acción.
Esta solución funciona bien a lo largo de otras capas de autenticación: Devise u otros.
USERS = { "user" => "secret" }
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_digest("Application") do |name|
USERS[name]
end
end
Cada vez que otros pares aterrizan en yourdomain.heroku.com, se les solicita la autenticación HTTP, y luego otra autenticación si está implementada.
Puede usar la autenticación básica de HTTP de una manera fácil:
¿Hay alguna forma de configurar la autenticación HTTP simple para una aplicación en heroku?
No es exactamente a prueba de balas, pero tal vez sea suficiente.
También puede intentar comprobar heroku_user
y rechazar el acceso si no está configurado:
No puedo encontrar mucha documentación sobre heroku_user
así que no sé si todavía es compatible.
Una solución realmente simple sería simplemente agregar una clave que pueda almacenarse en una cookie en la máquina de los usuarios. Esta no es una solución perfecta, ya que alguien podría obtener la clave, pero le brinda protección básica de que alguien tropiece con su sitio. Puede usar una url como http://www.yourdomain.com?access_key=random_string y luego agregar lo siguiente a su controlador de aplicación.
class ApplicationController < ActionController::Base
before_filter :check_redirect_key
def check_redirect_key
if request[:access_key] != ''random_string'' && cookies[:access_key] != ''random_string''
redirect_to "/404.html"
elsif request[:access_key] == ''random_string''
cookies.permanent[:access_key] = ''random_string''
end
end
end
Este código verificará la clave de acceso en la url o en una cookie en la máquina de los usuarios y los dejará entrar si existe en cualquier lugar. De esta forma, una vez que acceden al sitio con la clave, pueden acceder a la url directamente.
rack_staging joya rack_staging para manejar este caso de uso por mi cuenta, también podría ser útil para ti.