No commit activity in last 3 years
No release in over 3 years
With the BrowserID provider you enable your users to authenticate themselves across the web using a single authority - DISCONTINUED
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 0
 Project Readme

Persona is Shutting Down

Mozilla has announced that Persona will be shutting down November 2016. warden-browserid relies on the Persona service and will stop functioning properly once Persona is shut down. While it is possible to self-host Persona and configure warden-browserid to rely on your own instance, this is difficult and not recommended. See the wiki page linked above for recommended alternatives to Persona for authentication.

A Rack BrowserID Provider

Become a Mozilla BrowserID Primary Identity Provider.

This is a Rack middleware for providing the BrowserID Primary Identity service. I have so far tested this only with Ruby on Rails.

Code Climate Build Status

Installation

Add this line to your application's Gemfile:

gem 'browserid-provider'

And then execute:

$ bundle

Or install it yourself as:

$ gem install browserid-provider

Usage

In you Rails app config/application.rb, add:

  config.middleware.use BrowserID::Provider, :server_name => "example.org", :delegates => ["example.com"]

The default setup relies on Warden to see which user is logged in. This can easily be customized to fit any middleware function.

The available configuration options are the following:

  • authentication_path

    Where to redirect users for login defaults to: "/users/sign_in" (Devise default)

  • provision_path

    What HTTP path to deliver provisioning from defaults to: "/browserid/provision"

  • certify_path

    What HTTP path to deliver certifying from defaults to: "/browserid/certify"

  • whoami_path

    What HTTP path to serve user credentials at defaults to: "/browserid/whoami"

  • jquery_path

    What HTTP path JQuery is served at defaults to: "/assets/jquery.js"

  • whoami

    Name of the middleware to get the current user object from (:user must respond to :email method) This middleware will be called as follows: env['warden'].user.email defaults to: "warden"

  • private_key_path

    Where is the BrowserID OpenSSL private key located defaults to: "config/browserid_provider.pem"

  • The "/.well-known/browserid" path is required from the BrowserID spec and used here.

  • browserid_url

    Which BrowserID server to use, ca be one of the following:

    • login.dev.anosrep.org for development (default)
    • login.anosrep.org for beta
    • login.persona.org for production
  • server_name

    The domain name we are providing BrowserID for (default to example.org)

  • delegates

    An array of strings representing [authority delegates] 1

The client side is JavaScript enabled. For Rails use:

    <%= browserid_authentication_tag %>
    <!-- Enable BrowserID authentication API on the form #new_user -->
    <%= enable_browserid_javascript_tag "new_user" %>

In your login form, add a cancel button like this:

  <%= button_to_function "Cancel", "navigator.id.cancelAuthentication()" %>

Without Rails view helpers (in any framework), you can do:

  $('form#new_user').bind('ajax:success', function(data, status, xhr) { navigator.id.completeAuthentication() })

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request