view README.md @ 76:3936385d6c16

http: and https: URLs are now allowed again in tiny bio markdown.
author Atul Varma <avarma@mozilla.com>
date Wed, 30 Jun 2010 14:38:53 -0700
parents 707345220707
children
line wrap: on
line source

## The Mozilla Summit Identity Pal ##

### Overview ###

This project consists of two parts:

  (1) A RESTful Web service that serves as a simple identity provider
      and simple storage mechanism.

  (2) A set of static HTML, JavaScript, and CSS files used as a
      front-end for (1).

Only individuals on an email whitelist can access the service at
all. Each person has a 'bin' on the server which is only writable by
them, but is readable by anyone else on the email whitelist.

The authentication mechanism is as follows:

  (1) Authentication is initiated by sending a POST request with an
      email address to the service. Normally, this is performed by the
      Web-based front-end.

  (2) If the email address is on the whitelist, a URL with a challenge
      token is sent to the address. The user is then expected to find
      this email in their inbox and open this link in their browser, which
      opens the web-based front-end. 

  (3) At this point, the front-end sends the challenge token back to
      the server, and an authorization token is returned. This token
      is then permanently stored in the browser by the front-end, and
      can be used at any time to issue a privileged request to the Web
      service.

By permanently storing the token in the browser, no password is
needed; however, it should be noted that this means the browser should
always be under the control of the same individual, i.e. not in a
public place or shared by multiple family members. A separate browser
profile, user-agent, or user account should be used in such cases.

### Implementation And Dependencies ###

The Web service is a Python-based wsgi app with no dependencies other
than Python 2.6. This is encapsulated in the 'summitidp' package.

Tests for the Web service are in the 'tests' directory, and require
nose and webtest to run.

The HTML5 front-end requires a modern, standards-compliant browser, and
is actively tested on the latest production versions of Firefox,
Safari, and Chrome with default profile settings. In particular, the
front-end is not expected to work with browsers that have disabled DOM
storage.

Unfortunately, the front-end currently has no test suite.

### Running The Test Suite ###

Running the server's test suite can be accomplished by entering the
project's root directory and running:

  nosetests --with-doctest

### Running The Development Server ###

Before running the development server, the email whitelist needs to be
created. To do this, create a new directory called 'storage' in the
root directory of the project, and inside this create an
attendees.json file with the following contents:

  [
    'bob@foo.com',
    'jane@bar.com'
  ]

Obviously, the email addresses can be replaced with the actual ones on
the whitelist if desired.

A development server can be started by changing to the same directory and
running:

  python server.py

Then, open this URL in a browser:

  http://localhost:8000/

This starts the HTML5 front-end. Instead of actually sending emails,
however, the development server simply prints out a URL to stdout:
this can be pasted into the browser to "validate" any user for
development purposes.