Estoy usando sidekiq en mi aplicación de rieles. De forma predeterminada, cualquiera puede acceder a Sidekiq agregando "/ sidekiq" después de la url. Quiero proteger con contraseña/autenticar solo la parte sidekiq. ¿Cómo puedo hacer eso?¿Cómo puedo proteger con contraseña mi ruta/sidekiq (es decir, necesito autenticación para la herramienta Sidekiq :: Web)?
Respuesta
Ponga lo siguiente en su inicializador sidekiq
require 'sidekiq'
require 'sidekiq/web'
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
[user, password] == ["sidekiqadmin", "yourpassword"]
end
Ver "Seguridad" bajo https://github.com/mperham/sidekiq/wiki/Monitoring
Sidekiq :: Web utiliza Rack::Protection proteger su aplicación contra los ataques web típicos (como CSRF, XSS, etc). Rack :: Protection invalidaría su sesión e incrementaría el error
Forbidden
si considera que su solicitud no cumple con los requisitos de seguridad. Una de las posibles situaciones es que su aplicación funcione detrás de un proxy inverso y no le pase encabezados importantes (X-Forwarded-For
,X-Forwarded-Proto
). Tal situación y la solución se podían encontrar in this article y issue #2560 ...
Si está utilizando Idear (o de otro tipo de autenticación basada en Warden), puede haz esto, suponiendo que tienes un modelo de administrador de usuarios en tu aplicación.
# config/routes.rb
# This defines the authentication constraint
constraint = lambda do |request|
request.env['warden'].authenticate!({ scope: :admin_user })
end
# This mounts the route using the constraint.
# You could use any other path to make it less obvious
constraints constraint do
mount Sidekiq::Web => '/sidekiq'
end
Otra opción sería agregar algo como CanCan y acceso especial basado en roles.
Si está utilizando Sorcery para la autenticación, aquí está how to use Rails routes constraints para proteger ciertas rutas.
copiado aquí desde el wiki de la hechicería para la redundancia:
Este tutorial muestra cómo utilizar Rieles de las rutas de las limitaciones con la gema Hechicería. ¡Gracias a @anthonator por escribirlo!
En primer lugar, defina UserConstraint
módulo que será utilizado para todas las limitaciones:
Entonces, teniendo dicho módulo definido, puede especificar las clases de restricciones específicas. En estos ejemplos, primera ruta sólo funcionará si no hay ningún usuario conectado, el segundo sólo funcionará para el usuario de inicio de sesión que es un administrador:
class RouteConstraints::NoUserRequiredConstraint
include RouteConstraints::UserConstraint
def matches?(request)
!current_user(request).present?
end
end
class RouteConstraints::AdminRequiredConstraint
include RouteConstraints::UserConstraint
def matches?(request)
user = current_user(request)
user.present? && user.is_admin?
end
end
Finalmente, puede agregar las restricciones a la config/routes.rb
:
MyApp::Application.routes.draw do
# other routes …
root :to => 'admin#dashboard', :constraints => RouteConstraints::AdminRequiredConstraint.new
root :to => 'home#welcome', :constraints => RouteConstraints::NoUserRequiredConstraint.new
end
ok @kleopatra, ¿cómo es eso? :-) – AlexChaffee
Si está activando su propia autenticación personalizada, puede usar el ejemplo siguiente al que se hace referencia en los documentos here.
# lib/admin_constraint.rb
class AdminConstraint
def matches?(request)
return false unless request.session[:user_id]
user = User.find request.session[:user_id]
user && user.admin?
end
end
# config/routes.rb
require 'sidekiq/web'
require 'admin_constraint'
mount Sidekiq::Web => '/sidekiq', :constraints => AdminConstraint.new
Siento tarde a la fiesta, pero Sidekiq's wiki recomienda lo siguiente para Diseñar:
para permitir que cualquier autenticado User
:
# config/routes.rb
authenticate :user do
mount Sidekiq::Web => '/sidekiq'
end
para restringir el acceso a User.admin?
# config/routes.rb
authenticate :user, lambda { |u| u.admin? } do
mount Sidekiq::Web => '/sidekiq'
end
This wiki post también tiene muchos otros esquemas de seguridad.
Esto fue probada usando Rails 5.1.3, idearán 4.3 y 5.0 Sidekiq
- 1. cómo proteger mi sitio web
- 2. ¿Cómo puedo proteger mi aplicación web java?
- 3. Proteger con contraseña la aplicación web ASP.NET en IIS 7.5
- 4. Cómo proteger con contraseña la transmisión de videos con php
- 5. ¿Es posible proteger un servicio web con Autenticación de formularios?
- 6. ¿Cómo diseño e implemento la autenticación de contraseña para IOS?
- 7. Django - proteger algunos caminos web con autenticación básica
- 8. ¿Cómo puedo proteger mi archivo "hibernate.cfg.xml"? (Nhibernate)
- 9. Manera fácil de proteger con contraseña la página php
- 10. Apache .htaccess contraseña proteger con ruta relativa
- 11. Proteger contraseña incrustada
- 12. Apache CXF: Cómo proteger el servicio web JAX-RS con autenticación básica
- 13. ¿Cómo puedo proteger los parámetros de contraseña en URI de servicio web RESTful?
- 14. ¿Cómo puedo proteger mi aplicación ASP.NET AJAX?
- 15. Cómo hacer condicional .htaccess contraseña proteger
- 16. Contraseña proteger la aplicación de iPhone
- 17. Autenticación básica de IIS7 para proteger un sitio que usa la autenticación de formularios
- 18. contraseña proteger un archivo PDF
- 19. ¿Cuál es la forma más fácil de proteger con contraseña la base de datos mongodb para usuarios remotos?
- 20. ¿Cómo puedo proteger mi aplicación iOS contra herramientas como iFunbox
- 21. ¿Hay alguna manera de proteger la carpeta con la contraseña?
- 22. MonoTouch: Cómo proteger mi aplicación
- 23. Cómo proteger la interfaz web KDB/Q
- 24. Sitio web protegido con contraseña con JavaScript
- 25. Cómo proteger mi solicitud contra la piratería
- 26. autenticación django sin contraseña
- 27. WSContext.getUserPrincipal() devuelve nulo para la autenticación de resumen de contraseña
- 28. ¿Cómo puedo proteger el nombre de usuario y la contraseña de MySQL de la descompilación?
- 29. Autenticación mutua con servicios web
- 30. ¿Puedo decir si el iPhone tiene una contraseña?
BTW-pongo el siguiente en mi Gemfile por lo que no tendría que requerir manualmente sidekiq y sidekiq/web, tanto en el inicializador y la archivo routes.rb: "gem 'sidekiq', requiere: ['sidekiq', 'sidekiq/web']" – odigity