Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
rack middleware that enables rack applications as afid resource servers
Ruby
Branch: master
Failed to load latest commit information.
lib
.gitignore added some documentation in yardoc format
.yardopts added documentation and cleaned up project structure a bit
Gemfile renamed project to hadley
LICENSE.txt added documentation and cleaned up project structure a bit
README.rdoc more readme tweaks
Rakefile initial setup of middleware
config.ru updated the example in config.ru to leverage the recent enhancement t…
hadley.gemspec added documentation and cleaned up project structure a bit

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

Something went wrong with that request. Please try again.