Minimal OpenID authentication system with RoR
Yoan Blanc — Thu, 28 Dec 2006 — OpenID, Ruby, Ruby on Rails, SQLite, Web Application
I’ve talked to you about OpenID a couple of time ago, now I gonna show
you how to do an OpenID authentication with Rails.
First step install rails and start a rails website.
# gem install rails
$ rails openid
Now install the OpenID login generator and run it.
# gem install openid_login_generator
$ cd openid
$ script/generate openid_login auth
Open the README_LOGIN
file and read it, I’ll resume it here.
The file app/controller/application.rb
should look like.
require_dependency "openid_login_system"
class ApplicationController < ActionController::Base
include OpenidLoginSystem
end
The database configuration (config/database.yml
). SQLite:
keep it stupid simple, but continue to use MySQL maybe more reliable but
it’s not the purpose here.
development:
adapter: sqlite
database: db/openid_dev.db
Init the database :
$ sqlite3 db/openid_dev.db "CREATE TABLE 'users' \
( \
'id' INTEGER PRIMARY KEY NOT NULL, \
'openid_url' VARCHAR(256) DEFAULT NULL \
);"
And test it!
$ script/server
Open your browser at http://localhost:3000/auth/login/
enter
your OpenID id. You should log in. Now you can verify that it worked in
the backend too.
$ sqlite3 db/openid_dev.db
> .dump
You’ll se a line like this one.
INSERT INTO "users" VALUES(1, \
'https://yoan.blanc.myopenid.com/');
Marvellous! Every Rails applicaiton can be OpenID compatible in very
easy way. Don’t forget to RTFM
and have fun.
...for the Djangoists,
they can follow this tutorial CookBook Shortcuts OpenID Authentication.
Il de ça quelques temps, je vous avais parlé de OpenID, la petite révolution en marge des Microsoft
Passports. Aujourd’hui, nous allons voir ensemble par un tutoriel
aussi ludique de trivial comment créer sa première application web
(si c'est le cas)
avec Ruby On Rails
permettant l’authentification via OpenID, donc une
authentification décentralisée, merveilleux.
Les prérequis sont d’avoir installé RoR,
SQLite et OpenID Login Generator. À priori, il y a tout ce ses
pages pour vous en sortir seul, mais rien ne vaut de se faire prendre
par la main (non non pas de screencast, faut pas pousser).
# gem install rails \
openid_login_generator sqlite3-ruby
Allez, au lieu de faire la moue, sortez-moi un term et hop ! (La
version anglaise est plus light, n’hésitez pas à vous y référer
si je vais trop vite.)
$ rails openid
$ cd openid
$ script/generate openid_login auth
$ sqlite3 db/openid_dev.db "CREATE TABLE 'users' \
( \
'id' INTEGER PRIMARY KEY NOT NULL, \
'openid_url' VARCHAR(256) DEFAULT NULL \
);"
$ (echo <<EOF
development:
adapter: sqlite3
database: db/openid_dev.db
EOF
) > config/database.yml
$ script/server
Maintenant, ouvrez la page http://localhost:3000/auth/login
entrez-y
votre OpenID, et vous devriez arriver sur la page /auth/welcome
vous félicitant car vous le méritez bien.
Une petite vérification de notre base de donnée.
$ sqlite3 db/openid_dev.db .dump | grep "INSERT"
INSERT INTO "users" VALUES(1, \
'https://yoan.blanc.myopenid.com/');
Que dire: « merveilleux ! »
Que les Djangoïstes
ne soient en reste, on trouve plus ou moins la même
fonctionnalité à moindre coût également pour ce merveilleux framework
en Python : CookBook Shortcuts OpenID Authentication.