Skip to content

ruby-openid/rack-openid2

Repository files navigation

Rack::OpenID

Version Downloads Today CI Supported Build CI Unsupported Build CI Style Build CI Coverage Build CI Heads Build


Liberapay Patrons Sponsor Me on Github Polar Shield Donate to my FLOSS or refugee efforts at ko-fi.com Donate to my FLOSS or refugee efforts using Patreon

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 Open Source Helpers
documentation [on Github.com][homepage], [on Rdoc.info][documentation]
expert support Get help on Codementor
... πŸ’– Liberapay Patrons Sponsor Me Follow Me on LinkedIn Find Me on WellFound: Find Me on CrunchBase My LinkTree Follow Me on Ruby.Social Tweet @ Peter πŸ’» 🌏

TODO

  • 1 failing test (skipped)
  • rewrite tests with minitest/spec

🌈 Contributors

Current maintainer(s):

Special thanks to:

and contributors to original rack-openid:

Contributors

Made with contributors-img.

πŸ“„ License

The gem is available as open source under the terms of the MIT License License: MIT.

See LICENSE.txt for the official Copyright Notice.