Moin Authentication to the Launchpad Database



This specification describes the way we will get Moin wiki's to authenticate to the Launchpad server. In this way people with a Launchpad account can use that username and password to log on to the Ubuntu wiki if we shift the wiki to one based on Moin, as described in WikiTransitionPlan.

Implementation Plan

Moin Changes

We need to change in Moin. Moin is maintained in an Arch archive, so we can easily maintain our modifications in a branch.

The User class will need to be modified to authenticate against our Authserver. This will accept the usual Launchpad logins (email address or nickname), call the authserver, and receive a numeric ID and WikiName. Moin requires the unchangeable numeric ID to store preferences against. The WikiName will be treated as if it were the login name.

Also, we will change the handling MOIN_ID cookie to use Stuart's cookie code we use in Plone, if appropriate. Just using the numeric ID from Launchpad would be a bad idea, as these are easily guessable. Moin tries to generate unguessable IDs, so it doesn't have this issue.

Moin's new user/login page will be changed to link to Launchpad's user registration rather than Moin's new user signup.

We will want to write tests for our changes, to make sure they work with changes in rocketfuel and in upstream Moin.

We will aim to make to make clean hooks for our changes to Moin and submit those hooks upstream, to reduce our maintenance burden.

Our modified Moin won't share cookies with the Plone site (or Launchpad). This means that users will need to login seperately to the wiki, the website, and Launchpad. It's too much work to fix at the moment, but this would be desirable to fix eventually.

Launchpad Changes

Launchpad should automatically generate wikinames for new and existing users, for convenience for users and to protect against name squatting. They will be generated concatenating first name and last name, so more or less:

   1 wikiname = person.givenname.capitalize() + person.familyname.capitalize()
   2 wikiname = strip_non_letters(wikiname)  # hypothetical function.

The FOAF UI will be changed to hardcode the Ubuntu wiki as the only wiki a wikiname may be set for. This is not the long-term solution, but is sufficient for FoafOneDotZero. The Ubuntu Wiki will be made into a celebrity object.

The authserver will be modified to return the wikiname for the Ubuntu wiki in the user dict.

The DB schema will be updated to add a UNIQUE constraint on Wikiname for (person, wiki).

User Interface Requirements

Outstanding Issues


CategoryUdu CategorySpec

UbuntuDownUnder/BOFs/MoinLaunchpadAuthentication (last edited 2008-08-06 16:38:07 by localhost)