Screencast: Einführung Devise

Devise ist ein Authentifizierungslösung welche jegliche Controller-Logik als auch Views abdeckt. Im dieswöchigen Screencast könnt ihr sehen wie es eingesetzt werden kann.

 

Download:

Download (32.2 MB, 10:36)
Alternative Download fÜr iPod & Apple TV (26.8 MB, 10:36)

 

Resourcen:

 

Quellcode:

[bash]
bundle install
rails generate devise_install
rails generate devise User
rake db:migrate
rake routes
[/bash]

[ruby]
# Gemfile
gem ‚devise‘, ‚1.1.rc0‘

# config/environments/development.rb
config.action_mailer.default_url_options = { :host => ‚localhost:3000‘ }

# models/user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :lockable, :timeoutable, :confirmable and :activatable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation
end

# migration
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
# t.confirmable
t.recoverable
t.rememberable
t.trackable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both

t.timestamps
end

add_index :users, :email, :unique => true
# add_index :users, :confirmation_token, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end

def self.down
drop_table :users
end
end

# migration
create_table(:users) do |t|
t.database_authenticatable :null => false
# t.confirmable
t.recoverable
t.rememberable
t.trackable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both

t.timestamps
end

add_index :users, :email, :unique => true
# add_index :users, :confirmation_token, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :unlock_token, :unique => true
[/ruby]

[html]
<!– layouts/application.html.erb –>
<div id="user_nav">
<% if user_signed_in? %>
Signed in as <%= current_user.email %>. Not you?
<%= link_to "Sign out", destroy_user_session_path %>
<% else %>
<%= link_to "Sign up", new_user_registration_path %> or <%= link_to "sign in", new_user_session_path %>
<% end %>
</div>
[/html]

Passwortfreie Authentifizierung mittels SSH einrichten

Sie loggen sich ständig auf entfernten Servern ein und werden dabei jedes Mal nach Ihrem Passwort gefragt. Das ist nicht nur lästig, sondern auch ein Sicherheitsrisiko.

Eine bessere Alternative zur Eingabe von Passwörtern für jeden Ihrer Server bietet die Verwendung einer kryptografischen Authentifizierung mittels SSH und seinen öffentlichen/privaten Schlüsselpaaren.

Generieren Sie ein öffentliches/privates Schlüsselpaar mit:
$ ssh-keygen -t dsa
 
Sie können alle Fragen einfach mit Enter beantworten. Sie können den Befehl später immer wieder ausführen, wenn Sie die Standardwerte ändern wollen.

Nun installieren Sie Ihren öffentlichen Schlüssel auf einem entfernten Server Ihrer Wahl mit dem folgenden Befehl:
 $ cat ~/.ssh/id_dsa.pub | ssh rob@myhost "cat >> .ssh/authorized_keys2"
 
Ersetzen Sie dabei myhost durch den Domainnamen oder die IP-Adresse Ihres Servers.

Ein typisches Problem dabei sind falsche Zugriffsrechte auf das .ssh-Verzeichnis und die darin enthaltenen Dateien. Stellen Sie sicher, dass Ihr .ssh-Verzeichnis und die darin enthaltenen Dateien nur vom Eigentümer gelesen und geschrieben werden können:
$ chmod 700 ~/.ssh 
 
$ chmod 600 ~/.ssh/authorized_keys2

 

Diskussion

Der Vorteil der passwortfreien Authentifizierung besteht darin, dass Passwörter über die Leitung abgehört werden können und sog. Brute-Force-Attacken ausgesetzt sind. Die kryptografische Authentifizierung eliminiert diese Risiken. Es ist auch weniger wahrscheinlich, dass Ihre Passwörter bei fehlerhaften Login-Versuchen in Ihren lokalen Logs hängen bleiben.
Wie bei allen sicherheitsrelevanten Aspekten gibt es auch hier Nachteile. Wenn Sie Ihren privaten Schlüssel auf Ihrer lokalen Maschine ablegen, kann jeder mit Zugriff auf diese Maschine auf Ihre Server zugreifen, ohne die Passwörter kennen zu müssen. Beachten Sie diese potenzielle Sicherheitslücke, wenn Ihr Computer mal unbeaufsichtigt bleibt und wenn Sie einen Sicherheitsplan aufstellen.


Dieses Rezept stammt aus dem Rails Kochbuch, veröffentlicht beim O’Reilly Verlag