Rack::OpenID
Provides a more HTTPish API around the ruby-openid library.
Installation
Install the gem and add to the application's Gemfile by executing:
$ bundle add rack-openid2
If bundler is not being used to manage dependencies, install the gem by executing:
$ gem install rack-openid2
Usage
You trigger an OpenID request similar to HTTP authentication. From your app, return a "401 Unauthorized" and a "WWW-Authenticate" header with the identifier you would like to validate.
On competition, the OpenID response is automatically verified and assigned to env["rack.openid.response"]
.
Rack Example
MyApp = lambda do |env|
if resp = env["rack.openid.response"]
case resp.status
when :success
...
when :failure
...
else
[401, {"WWW-Authenticate" => 'OpenID identifier="http://example.com/"'}, []]
end
end
end
use Rack::OpenID
run MyApp
Sinatra Example
# Session needs to be before Rack::OpenID
use Rack::Session::Cookie
require 'rack/openid'
use Rack::OpenID
get '/login' do
erb :login
end
post '/login' do
if resp = request.env["rack.openid.response"]
if resp.status == :success
"Welcome: #{resp.display_identifier}"
else
"Error: #{resp.status}"
end
else
headers 'WWW-Authenticate' => Rack::OpenID.build_header(
:identifier => params["openid_identifier"]
)
throw :halt, [401, 'got openid?']
end
end
enable :inline_templates
__END__
@@ login
<form action="/login" method="post">
<p>
<label for="openid_identifier">OpenID:</label>
<input id="openid_identifier" name="openid_identifier" type="text" />
</p>
<p>
<input name="commit" type="submit" value="Sign in" />
</p>
</form>
General Info
Primary Namespace | Rack::OpenID |
---|---|
gem name | ruby-openid2 |
code triage | |
documentation | [on Github.com][homepage], [on Rdoc.info][documentation] |
expert support | |
... 💖 |
💻 🌏 |
TODO
- 1 failing test (skipped)
- rewrite tests with minitest/spec
🌈 Contributors
Current maintainer(s):
Special thanks to:
- Joshua Peek author of original
rack-openid
- Michael Grosser maintainer of original
rack-openid
and contributors to original rack-openid
:
Made with contributors-img.
📄 License
The gem is available as open source under the terms of the MIT License .
See LICENSE.txt for the official Copyright Notice.
[comment]: <> ( 📄 LEGAL LINKS )