wiki:OpenId

Version 3 (modified by davea, 13 years ago) (diff)

--

Support for OpenID

The goal is to let users attach to projects using OpenID.

Interface

  • On the "identify your account" page of the Attach Project wizard, add a "Log in with OpenID" button.
  • Selecting this opens a web browser window.
  • User sees a page on project site listing OpenID providers (Google, Facebook, etc.). User clicks one.
  • The user sees the provider's login page. Depending on the provider, they may see "OK to send email addr to (project URL)?"
  • On successful login, user sees Welcome page on project site
  • Wizard shows Done page

Implementation

DB table

  • openid_login. fields: nonce, status, create_time

Project PHP pages

  • openid_login.php: Manager goes here. It takes a nonce ID as an arg. It creates an openid_login record. Shows list of links to OpenID providers.
  • openid_callback.php: Called by OpenID provider. Takes nonce ID as arg. Creates user record if needed. Displays status to user. Updates status field of openid_login record.
  • openid_poll.php: Web RPC called by client. Takes nonce ID as arg. Returns status and, if successful, authenticator.

GUI RPCs

  • openid_poll(url, nonce): initiate call to openid_poll.php
  • openid_poll_poll(status): poll for completion; if success, return authenticator

Manager

If user selects OpenID login:

  • create nonce ID, open browser to openid_login.php
  • show "communication with project" page
  • call openid_poll() and openid_poll_poll() until get status other than PENDING
  • On success, do project_attach() GUI RPC using authenticator
  • show success or failure in wizard