Browse files

Update README with 1.0 info

  • Loading branch information...
Michael Bleigh
Michael Bleigh committed Sep 4, 2011
1 parent 009f9c1 commit aca30f3452dbdba609da810a9d1da0b858da97b2
Showing with 58 additions and 153 deletions.
  1. +58 −153
@@ -1,155 +1,60 @@
# OmniAuth: Standardized Multi-Provider Authentication
-OmniAuth is a new Rack-based authentication system for multi-provider external
-authentcation. OmniAuth is built from the ground up on the philosophy that
-**authentication is not the same as identity**, and is based on two
-1. The traditional 'sign up using a login and password' model is becoming the
- exception, not the rule. Modern web applications offer external
- authentication via OpenID, Facebook, and/or OAuth.
-2. The interconnectable web is no longer a dream, it is a necessity. It is not
- unreasonable to expect that one application may need to be able to connect
- to one, three, or twelve other services. Modern authentication systems
- should allow a user's identity to be associated with many authentications.
-## <a name="installation">Installation</a>
-To install OmniAuth, simply install the gem:
- gem install omniauth
-## <a name="ci">Continuous Integration</a>
-[![Build Status](](
-## <a name="providers">Providers</a>
-OmniAuth currently supports the following external providers:
-* via OAuth (OAuth 1.0, OAuth 2, and xAuth)
- * 37signals ID (credit: [mbleigh](
- * AngelList (credit: [joshuaxls](
- * (credit: [philnash](
- * Blogger (credit: [dsueiro-backing](
- * Cobot (credit: [kamal](
- * DailyMile (credit: [cdmwebs](
- * (credit: [chouti](
- * Dopplr (credit: [flextrip](
- * Douban (credit: [quake](
- * Evernote (credit: [szimek](
- * Facebook (credit: [mbleigh](
- * Foursquare (credit: [mbleigh](
- * GitHub (credit: [mbleigh](
- * Glitch (credit: [harrylove](
- * GoodReads (credit: [cristoffer](
- * Google Health (credit: [jaigouk](
- * Gowalla (credit: [kvnsmth](
- * Hyves (credit: [mrdg](
- * (credit: [dcu](
- * Flattr (credit: [dcu](
- * Instagram (credit: [kiyoshi](
- * Instapaper (credit: [micpringle](
- * LastFM (credit: [tictoc](
- * LinkedIn (credit: [mbleigh](
- * Mailchimp (via [srbiv](
- * Mailru (credit: [lexer](
- * Meetup (credit [coderoshi](
- * Miso (credit: [rickenharp](
- * Mixi (credit: [kiyoshi](
- * Netflix (credit: [caged](
- * Orkut (credit: [andersonleite](
- * Plurk (credit: [albb0920](
- * Qzone (credit: [quake](
- * Rdio (via [brandonweiss](
- * Renren (credit: [quake](
- * Salesforce (via [CloudSpokes](
- * SmugMug (credit: [pchilton](
- * SoundCloud (credit: [leemartin](
- * T163 (credit: [quake](
- * Taobao (credit: [l4u](
- * TeamBox (credit [jrom](
- * Tqq (credit: [quake](
- * TradeMe (credit: [pchilton](
- * TripIt (credit: [flextrip](
- * Tsina (credit: [quake](
- * Tsohu (credit: [quake](
- * Tumblr (credit: [jamiew](
- * Twitter (credit: [mbleigh](
- * Viadeo (credit: [guillaug](
- * Vimeo (credit: [jamiew](
- * Vkontakte (credit: [german](
- * WePay (credit: [ryanwood](
- * Yahoo (credit: [mpd](
- * Yammer (credit: [kltcalamay](
- * YouTube (credit: [jamiew](
-* CAS (Central Authentication Service) (credit: [jamesarosen](
-* Flickr (credit: [pchilton](
-* Google Apps (via OpenID) (credit: [mbleigh](
-* Google OpenID+OAuth (via Hybrid Protocol) (credit: [boyvanamstel](
-* LDAP (credit: [pyu10055](
-* OpenID (credit: [mbleigh](
-* Yupoo (credit: [chouti](
-## <a name="usage">Usage</a>
-OmniAuth is a collection of Rack middleware. To use a single strategy, you simply need to add the middleware:
- require 'oa-oauth'
- use OmniAuth::Strategies::Twitter, 'CONSUMER_KEY', 'CONSUMER_SECRET'
-Now to initiate authentication you merely need to redirect the user to `/auth/twitter` via a link or other means. Once the user has authenticated to Twitter, they will be redirected to `/auth/twitter/callback`. You should build an endpoint that handles this URL, at which point you will have access to the authentication information through the `omniauth.auth` parameter of the Rack environment. For example, in Sinatra you would do something like this:
- get '/auth/twitter/callback' do
- auth_hash = request.env['omniauth.auth']
- end
-The hash in question will look something like this:
- {
- 'uid' => '12356',
- 'provider' => 'twitter',
- 'user_info' => {
- 'name' => 'User Name',
- 'nickname' => 'username',
- # ...
- }
- }
-The `user_info` hash will automatically be populated with as much information about the user as OmniAuth was able to pull from the given API or authentication provider.
-## <a name="resources">Resources</a>
-The best place to find more information is the [OmniAuth Wiki]( Some specific information you might be interested in:
-* [CI Build Status](
-* [Roadmap](
-* [Changelog](
-* [Report Issues](
-* [Mailing List](
-## <a name="core">Core Team</a>
-* **Michael Bleigh** ([mbleigh](
-* **Erik Michaels-Ober** ([sferik](
-## <a name="rubies">Supported Rubies</a>
-This library aims to support and is [tested
-against]( the following Ruby
-* Ruby 1.8.7
-* Ruby 1.9.2
-* [JRuby](
-* [Rubinius](
-* [Ruby Enterprise Edition](
-If something doesn't work on one of these interpreters, it should be considered
-a bug.
-This library may inadvertently work (or seem to work) on other Ruby
-implementations, however support will only be provided for the versions listed
-If you would like this library to support another Ruby version, you may
-volunteer to be a maintainer. Being a maintainer entails making sure all tests
-run and pass on that implementation. When something breaks on your
-implementation, you will be personally responsible for providing patches in a
-timely fashion. If critical issues for a particular implementation exist at the
-time of a major release, support for that Ruby version may be dropped.
-## <a name="license">License</a>
+**NOTICE:** This documentation and code is toward OmniAuth 1.0 in which
+each provider will become its own separate gem. If you're looking for
+the current released version, please visit [OmniAuth 0.3 Stable
+## Structural Changes Coming in 1.0
+In version 1.0, the `omniauth` gem will become simply the underlying
+framework upon which authentication strategies can be built. That means
+where once users would put `gem 'omniauth'` into their Gemfile and be
+finished, now each provider will have a separate gem (e.g.
+This change will bring about better code, faster releases, and hopefully
+an even more vibrant provider landscape. For more on the rationale of
+the change, see [this issue](
+## Technical Changes Coming in 1.0
+### The AuthHash Class
+In the past, OmniAuth has provided a simple hash of authentication
+information. In 1.0, the returned data will be an AuthHash, a special
+kind of hash that has extra properties special to OmniAuth. In addition,
+the auth hash schema will be changing slightly. More on that soon.
+### Universal Options
+In 1.0, it will be possible to set certain configuration options that
+will then apply to all providers. This will make certain things easier.
+### Simpler Dynamic Workflow
+To date, the workflow for "dynamic" providers (being able to change them
+at runtime) has been somewhat difficult. We will be re-evaluating this
+process and making sure it's as good as it can be.
+### Declarative Provider Authorship
+We hope to provide a more declarative provider authorship system that
+will make it both easier to write and easier to test strategies. Much of
+this may have to be implemented in "aggregate" strategy providers such
+as OAuth and OAuth2, but stay tuned for more on this.
+### Testing, Testing, Testing!
+OmniAuth 1.0 will be strongly tested and solid. Because we can release
+it one piece at a time (starting with the core gem and expanding out
+into the other provider gems) we will be able to maintain much higher
+code quality and the project will generally be more manageable.
+## Stay Tuned!
+OmniAuth 1.0 is a work in progress. We will keep the community updated
+about progress as we have more information. Thanks!
+# <a name="license">License</a>
OmniAuth is released under the MIT License.

0 comments on commit aca30f3

Please sign in to comment.