mantisbt:issue:8199
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| mantisbt:issue:8199 [2008/02/05 02:48] – Added link to Zend framework. vboctor | mantisbt:issue:8199 [2008/10/29 04:36] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== OpenId Authentication Requirements ====== | ||
| + | * **Author**: NT | ||
| + | * **Status**: Draft | ||
| + | * **Associated Issue**: http:// | ||
| + | |||
| + | |||
| + | |||
| + | ===== Introduction ===== | ||
| + | Allow users to Authenticate themselves using an OpenId provider. | ||
| + | |||
| + | Allow users to signup for an account using an OpenId and prepopulate \\ | ||
| + | the signup page with a userid, name and email address supplied by their OpenId profile. | ||
| + | |||
| + | |||
| + | ==== Login Flow ==== | ||
| + | - Show New Form with Text Box and Sign-in button for OpenIds on '' | ||
| + | - Process form with new page '' | ||
| + | * Check openid entered exists on database (and is not blocked). | ||
| + | * use OpenId library to check authorisation (return to page '' | ||
| + | * any errors go back to '' | ||
| + | - User authenticates on OpenId server. | ||
| + | - Process response from the OpenId server. | ||
| + | * If the user cancelled signin or some error occurred then go back to '' | ||
| + | * Retrieve the user_id associated with this OpenId from the database. | ||
| + | * Login user to mantis, if fail then back to '' | ||
| + | - Display the page user started login process from or the default home page. | ||
| + | * Complication - need to save the login success page while authorisation is checked. | ||
| + | | ||
| + | |||
| + | ==== Signup Flow ==== | ||
| + | |||
| + | - Show New link on '' | ||
| + | - Click link to get '' | ||
| + | - Process form with new page '' | ||
| + | * Check openid entered does not exist on database. | ||
| + | * use OpenId library to check authorisation (return to page '' | ||
| + | * request that openid returns '' | ||
| + | * any errors go back to '' | ||
| + | - User authenticates on OpenId server and (possibly specifies which field values to send back). | ||
| + | - Process response from the OpenId server. | ||
| + | * If the user cancelled signin or some error occurred then go back to '' | ||
| + | * Display '' | ||
| + | - Process '' | ||
| + | * Any errors - reshow '' | ||
| + | * Add user to database - api change needed to supply '' | ||
| + | |||
| + | ==== Reauthentication Flow ==== | ||
| + | |||
| + | - Allow the user to enter an OpenId (if they have one) | ||
| + | - Process openid in reauthentication code (change core? | ||
| + | * get and post parameters need to be saved. | ||
| + | - User authenticates on OpenId server. | ||
| + | - Process response from the OpenId server. | ||
| + | * Any errors show reauthenication page with message to let them use userid/ | ||
| + | - Dispay page that required authentication. | ||
| + | |||
| + | |||
| + | ===== Implementation Notes ===== | ||
| + | |||
| + | * Use a third party library to implement OpenId support such as the [[http:// | ||
| + | * Implement as a plug-in | ||
| + | * For security do not use openid uri returned from forms once the user has authenticated, | ||
| + | * Passing back multiple values returned by the signup request may be easier with a class than with procedural code. | ||
| + | * '' | ||
| + | * should '' | ||
| + | |||
| + | ==== Database Changes ==== | ||
| + | |||
| + | * new table '' | ||
| + | < | ||
| + | create table user_openids ( | ||
| + | openid_url varchar(255) not null, | ||
| + | primary key (openid_url), | ||
| + | user_id int not null, | ||
| + | index (user_id) | ||
| + | );</ | ||
| + | * When a row in '' | ||
| + | |||
| + | ==== Configuration ==== | ||
| + | |||
| + | * OpenId library will need to be downloaded and added to php include path. | ||
| + | |||
| + | |||
| + | ==== Implementation Log ==== | ||
| + | |||
| + | |||
| + | |||
| + | ===== Other Changes ===== | ||
| + | * Plugin needs to be a be able to modify login page ([[http:// | ||
| + | * Need event signal when user is deleted ([[http:// | ||
| + | * Need event signal when user is forced to reauthenticate. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Notes ===== | ||
| + | Is the JanRain library the best one to use? \\ | ||
| + | JanRain libraries seem popular in the php and python communities, | ||
| + | but in the java world the Acegi Spring security project developers have replaced JanRain with \\ | ||
| + | OpenId4Java (see http:// | ||
| + | |||
| + | |||
| + | ===== Feedback ===== | ||
| + | * [vboctor] I totally support the integration of open id in Mantis and as soon as we have a stable requirements and contributed implementation, | ||
| + | * [vboctor] Do we really need to treat signup as a separate scenario from login? | ||
| + | * [vboctor] There should be a configuration option to enable / disable open id. | ||
| + | * * [NT] To be handled by enabling / disabling the plugin-in. | ||
| + | * [vboctor] If the allow signup configuration option is disabled, then it shouldn' | ||
| + | * [vboctor] Specify the db schema changes involved. | ||
| + | * [vboctor] Provide some sample open id providers (e.g. myopenid and yahoo/gmail when they finalize their support). | ||
| + | * [vboctor] Do we need to support a mode where an admin can configure Mantis to only allow OPEN ID login/ | ||
| + | * [vboctor] If a user is already logged in using his/her open id, what will happen when they go to Mantis (i.e. describe single sign-on scenario). | ||
| + | * [vboctor] I haven' | ||
| + | * * [NT] Licensed under the [[http:// | ||
| + | * [vboctor] giallu directed me to [[http:// | ||
