Warden OpenID Strategy¶ ↑
Install¶ ↑
$ gem install warden-openid
Usage¶ ↑
1. Configure Warden uses OpenID strategy¶ ↑
require 'warden-openid' use Rack::Session::Cookie use Rack::OpenID use Warden::Manager do |manager| manager.default_strategies :openid manager.failure_app = FailureApp end
2. Setup user finder¶ ↑
Warden::OpenID.configure do |config| config.user_finder do |response| User.find_by_identity_url(response.identity_url) end end
response is an instance of OpenID::Consumer::Response
.
3. Create route and view¶ ↑
Example by Sinatra and Haml:
post '/signin' do authenticate! end %form(action='/signin' method='post') %input(type='text' name='openid_identifier') %input(type='submit' value='Sign in')
This strategy starts with openid_identifier parameter.
You may need to customize /unauthenticated
route. Please refer to examples directory for details.
Fetch additional fields from server¶ ↑
Warden::OpenID.configure do |config| config.required_fields = 'email' config.optional_fields = %w(nickname fullname) config.user_finder do |response| fields = OpenID::SReg::Response.from_success_response(response) p fields['email'] p fields['nickname'] end end
Caveats¶ ↑
If you use this with Rails, please don’t use OpenID::Store::Memory
. A problem occurs by class reloading in the development mode.
For example, OpenID::Store::Filesystem
is used instead:
require 'openid/store/filesystem' Rails.configuration.middleware.use Rack::OpenID, OpenID::Store::Filesystem.new(Rails.root + 'tmp/openid')
Contributors¶ ↑
-
Philip H. MacIver
Note on Patches/Pull Requests¶ ↑
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright¶ ↑
Copyright © 2010 Keita Urashima. See LICENSE for details.