curl – Sebastians Blog https://sgaul.de Neues aus den Softwareminen Mon, 21 Sep 2015 12:53:00 +0000 de-DE hourly 1 https://wordpress.org/?v=6.1.1 https://sgaul.de/wp-content/uploads/2019/02/cropped-sgaul-2-1-32x32.jpg curl – Sebastians Blog https://sgaul.de 32 32 ActiveAdmin: Authentifizierung für Browser und API https://sgaul.de/2015/09/22/activeadmin-authentifizierung-fuer-browser-und-api/ Tue, 22 Sep 2015 14:37:09 +0000 https://sgaul.de/?p=2805 ActiveAdmin: Authentifizierung für Browser und API weiterlesen]]> Eine einfache API-Authentifizierung lässt sich in ActiveAdmin durch Wiederverwendung des Standard-Admin-Users im Initializer erreichen:

 # config/initializers/active_admin.rb
 ActiveAdmin.setup do |config|
   config.prepend_before_filter do
     if active_admin_config.namespace.name == :api
       authenticate_or_request_with_http_basic('API') do |name, password|
         user = AdminUser.find_by_email!(name)
         sign_in(:admin_user, user) if user.valid_password?(password)
       end
     end
   end

Dies erlaubt die Angabe des Benutzernamens und Passworts im Browser als Popup (HTTP-Basic-Authentication) und als Header für APIs:

curl -u admin@example.com:password http://localhost:3000/api/my_resources.json

Will man dies mit Capybara ohne JS testen, hat sich für mich der folgende Ansatz bewährt:

page.driver.browser.basic_authorize(user.email, user.password)
visit api_my_resources_path

Bei anderen Treibern (zum Beispiel bei Verwendung von Javascript) kann die Schnittstelle abweichen.

]]>