Http_auth With Devise in Rails Applications

http-Authentifikation spielt eine Rolle wenn man sich mit gesicherter API Programmierung beschaeftigt.

In Ruby on Rails bringt das Devise Gem bereits alles mit was man dafuer benoetigt. Ich mag das Devise Gem wenn es um Authentifizierung in Rails Apps geht. Es ist einfach zu handhaben und wird staendig weiterentwickelt. Grundlegende Hinweise zur Einrichtung von http_auth bringt die Dokumentation von Devise.

https://github.com/plataformatec/devise/wiki/How-To:-Use-HTTP-Basic-Authentication

Wichtig ist, dass in der devise.rb die Konfiguration config.http_authenticatable = true gesetzt ist. Auch config.skip_session_storage = [:http_auth] kann gesetzt werden.

Diese reicht leider nicht voellig aus um http_auth zu nutzen. Es wird folgender Fehler generiert: WARNING: Can't verify CSRF token authenticity.

Diesen kann man umgehen, wenn man einen Filteraufruf an den Anfang des jeweiligen Controllers einfuegt. Hier sollte jedoch darauf geachtet werden, dass nur die Controller den Filteraufruf bekommen sollen, welche auch von der API ueber http_auth erreichbar sein sollen.

Der folgende Aufruf umgeht das Problem der CSRF token authenticity

1
skip_before_filter  :verify_authenticity_token

Die Controllermethode kann dann wie folgt aussehen:

1
2
3
4
5
6
7
class Api::Apicontroller < ApplicationController
  before_filter :authenticate_user!
  skip_before_filter  :verify_authenticity_token

  [...]

end

Um die API zu erreichen muss noch in der routes.rb eine Route gesetzt werden:

1
2
3
namespace :api, defaults: {format: :json} do
    match '/webapi' => 'apicontroller#webapi', :via => :post
end

Ueber diese Beispielroute koennen der Rails Applikation nun JSON Kodierte Daten empfangen werden. Im Controller muss dann nur noch die Verarbeitung beschrieben werden.

Comments

GitHub Repos

  • Status updating...