rack middleware that enables rack applications as afid resource servers
Ruby
Latest commit b12aeb4 Feb 14, 2012 @bitbutcher more readme tweaks
Permalink
Failed to load latest commit information.
lib
.gitignore
.yardopts added documentation and cleaned up project structure a bit Feb 14, 2012
Gemfile
LICENSE.txt added documentation and cleaned up project structure a bit Feb 14, 2012
README.rdoc
Rakefile
config.ru updated the example in config.ru to leverage the recent enhancement t… Feb 13, 2012
hadley.gemspec

README.rdoc

Welcome to Hadley

Hadley is rack middleware built on top of the excellent security authentication middleware warden. Hadley enables Rack-based web applications to easily become AFID protected resource servers.

Getting Started

Rails:

  1. Add gem 'hadley' to your Gemfile

  2. Run bundle from your project root

  3. Run touch config/initializers/hadley.rb from your project root

  4. Add warden and hadley to your middleware stack by opening config/initializers/hadlery.rb in your favorite text editor and adding the following:

    token_store = Hadley::TokenStore.new(Rails.cache)
    
    MyApp::Application.config.middleware.insert_after ActionDispatch::Session::CookieStore, Warden::Manager do |manager|
      # setup authentication for the afid server to provision and revoke access tokens
      manager.basic(:server) do |basic|
        basic.hash_credentials true
        basic.lookup do |id, secret|
          [ id, secret ] == [ 'my_hashed_id', 'my_hashed_secret' ] ? id : nil
        end
      end
      # setup authentication for afid clients to authenticate in anonymous mode (client_credentials grant type in OAuth2 
      # parlance)
      manager.bearer(:client) do |bearer|
        bearer.token_store token_store
        bearer.anonymous_allowed true
      end
      # setup authentication for afid clients to access apis on behalf of a particular user (authorization_grant grant 
      # type in OAuth2 parlance)
      manager.bearer(:user) do |bearer|
        bearer.token_store token_store
        bearer.anonymous_allowed false
      end
    end
    
    MyApp::Application.config.middleware.insert_after Warden::Manager, Hadley::Middleware, token_store: token_store
  5. Run rake middleware from your project root and verify that Warden::Manager appears after ActionDispatch::Session::CookieStore and Hadley::Middleware appears after Warden::Manager