To create an account with a BOINC project, a participant must: and then for each selected project:

If the participant chooses N projects, there are N forms to fill out, N emails to handle, and N dialog interactions with the BOINC client. This is tedious if there are lots of projects. Furthermore, it involves cutting and pasting long random strings, which is intimidating to some participants.

This document describes BOINC's support for account management systems, which streamline the process of finding and joining BOINC projects. A typical account management system is implemented as a web site. The participant experience is:

This requires about 1/3 of the interactions of the manual approach, and avoids dealing with long random strings.

Implementation

An account management system works as follows:

  1. The participant sets up his meta-account and selects projects.
  2. The account manager issues a create account RPC to each selected project.
  3. The project creates an account (marked as 'unconfirmed') and sends an email to the participant.
  4. The participant opens the email and clicks on a link in it, causing the account to be marked as 'confirmed'.
  5. The account manager periodically polls each selected project with a query account RPC, waiting for all accounts to become confirmed.
  6. When all accounts are confirmed, the participant downloads and installs the BOINC client software from the account manager. The install package includes a file (specific to this account manager) containing the URL of the account manager.
  7. The BOINC client runs, and asks the participant to enter the name and password of his meta-account.
  8. The BOINC client does a query accounts RPC to the account manager, obtaining a list of accounts. It then attaches to these accounts and proceeds.

Core client functionality

The BOINC core client uses the following files to keep track of account manager information.

acct_mgr_url.xml
This file identifies the account manager. It is typically bundled with the BOINC client in an installer package. Its format is: ".html_text(" Name of BOINC account management system http://acctmgr.com/ ")."
acct_mgr_login.xml
This file contains meta-account information. Its format is: ".html_text(" name xxx ")."
If the core client finds acct_mgr_url.xml but not acct_mgr_login.xml, it prompts for a name and password, stores them in acct_mgr_login.xml, and makes an account manager RPC. The core client offers menu items for making an account manager RPC, and for changing the name/password.

Remote Procedure Call (RPC) Specifications

This architecture involves two RPC mechanisms:

The underlying protocol of both mechanisms is as follows:

Account creation RPCs

Create account

"; list_start(); list_item("URL", "project_url/am_create.php"); list_item( "input", "email_addr: email address
nonce: nonce ID (crypto-random string)" ); list_item( "output", html_text(" [ message ] [ ") ); list_item( "action", "The server creates a tentative account. The server sends email to the given address, of the form:
Someone (hopefully you) joined [project name] with this email address.
To confirm your participation in [project name] please visit the following URL:
    xxx

If you do not want to participate in [project name], just ignore this message.
        
When the participant visits xxx, the account is confirmed. "); list_end(); echo "

Query account

"; list_start(); list_item("URL", "project_url/am_query.php"); list_item("input", "nonce" ); list_item("output", html_text(" [MSG] [ 0 ] [ KEY ] ") ); list_item("action", "If the account has been confirmed, returns the account key." ); list_end(); echo "

Get account info

"; list_start(); list_item("URL", "project_url/am_get_info.php"); list_item("input", "account_key"); list_item("output", html_text(" NAME COUNTRY POSTAL_CODE GLOBAL_PREFS PROJECT_PREFS URL SEND_EMAIL SHOW_HOSTS N or MSG ") ); list_item("action", "returns data associated with the given account"); list_end(); echo "

Set account info

"; list_start(); list_item("URL", "project_url/am_set_info.php"); list_item("input", "account_key
[ name ]
[ country ]
[ postal_code ]
[ global_prefs ]
[ project_prefs ]
[ url ]
[ send_email ]
[ show_hosts ]
[ teamid ] zero means quit current team, if any " ); list_item("output", html_text(" [ MSG ] [ ] ") ); list_item("action", "updates one or more items of data associated with the given account" ); list_end(); echo "

Account manager RPCs

"; list_start(); list_item("URL", "Given in the file acct_manager_url.xml"); list_item("input", "name
password" ); list_item("output", html_text(" [ MSG ] [ URL KEY ... ] ") ); list_item("action", "returns a list of the accounts associated with this meta-account" ); list_end(); page_tail(); ?>