wiki:Proposal/ProjectSimpleAccountCreation

Version 9 (modified by romw, 13 years ago) (diff)

--

Simplified Project Website Account Creation in BOINC

Introduction

BOINC supports multiple ways to create accounts for any given project. Creating accounts on a BOINC project via the project website hasn’t received as much attention in previous years as it probably should have. This revised process is an attempt to better capture volunteers that are visiting a project website via press releases and other forms of advertisement.

At present the current system asks the volunteer to remember the projects URL and then shuffles them off to the BOINC website to download the client software. Once the software has been downloaded the volunteer has to walk through the project attach wizard and then volunteer must remember the project URL and answer questions about account credentials.

With the purposed changes in this document we should be able to support the following scenarios:

  • Automatic attach via anonymous accounts
  • Automatic attach via identifiable accounts
  • Automatic attach via client-created accounts

Anonymous accounts are accounts which do not contain and personally identifiable information, when a volunteer downloads the client software a set of cookies are deposited onto the host by the project to inform the manager which project it should attach too.

Identifiable accounts are the traditional account scheme used in BOINC, at present we just care about an email address and password. In this scenario a project can determine which pieces of information it needs to collect before setting the cookie set and begin the process of downloading the client software. As far as the client software is concerned it is the same as attaching to an anonymous account.

Automatic attach via client-created accounts is where the server stores the needed cookie information except the authenticator, the client will then prompt for the email address and password to use for the project and then proceed to create that account before attaching to the project.

Changes to the Project Website

When a volunteer first visits a project's homepage with a supported browser they are presented with a 'download now' link instead of the current 'create account' link. Under the anonymous account scenario and client-created account scenario the process might look like this:

Clicking on the 'download now' link will cause a set of cookies to be stored on the machine; these cookies will contain the authenticator to use and the current time of the server. The resulting page should provide basic instructions to launch the BOINC installer on the supported browser. After 5-10 seconds the webpage should redirect to the BOINC website to download the BOINC installer and pass in the authenticator and return URL which will be used to return the volunteer to the project where they may decide to provide more information (name, country, team, etc) to the project.

Under the identifiable account scenario the process might look like this:

Clicking on the 'download now' link will cause a popup frame to appear asking for the required information. After the information has been provided a set of cookies are stored on the machine; this cookie will contain the authenticator to use and the current time of the server. The resulting page should provide basic instructions to launch the BOINC installer on the supported browser. After 5-10 seconds the webpage should redirect to the BOINC website to download the BOINC installer and pass in the authenticator and return URL which will be used to return the volunteer to the project where they may decide to provide more information (name, country, team, etc) to the project.

Changes to the BOINC manager

At present the BOINC manager requires either a project_init.xml file or an acct_mgr_url.xml file to engage the cookie detection code and automatic add project process. We should modify the manager to check for cookies from all the available URLs in the all projects list. It should behave like this:

if NumberofAttachedProjects == 0 then
    if exists(project_init.xml) or exists(acct_mgr_url.xml) then
        ... do the same stuff as we do now ...
    else
        foreach (project in all_projects_list.xml)
            if exists(project.cookie) then
                add project cookie to CookiesFound array
            endif
        endfor

        sort CookiesFound array by CreationTime

        if CookiesFound.Count > 0 then
            if CookiesFound[0].IsProject then
                launch attach to project wizard in automatic mode
            endif
            if CookiesFound[0].IsAccountManager then
                launch attach to account manager wizard in automatic mode
            endif
        endif
    endif
endif

NOTE: Unless there is an error, the only thing the volunteer might be prompted for is proxy server information.

Implementation Details

Project Cookie Contents

Cookie Name Cookie Data Type Cookie Values Cookie Description
Authenticator string The account key the core client should use
Action string "attach" What action the manager should take
CreationTime time_t time(0) The current timestamp of the cookie set

Notes: If the authenticator is missing but the Action item is defined then it is assumed the manager should prompt for the creation of credentials.

Notes: Pre 6.13 clients only react to the Authenticator item.

Account Manager Cookie Contents

Cookie Name Cookie Data Type Cookie Values Cookie Description
Login string The username/email address to use for the account
PasswordHash string The password hash for the account
ReturnURL string The URL to display in a web browser after the wizard runs
Action string "attach" What action the manager should take
CreationTime time_t time(0) The current timestamp of the cookie set

Conclusion

In theory this should allow us to capture incoming volunteer traffic from mainstream media regardless of their level of computer expertise.

Outstanding Issues

What do we do about alpha and beta projects?

Normally alpha and beta projects to not make the all_projects_list.xml file. However, it would be useful to be able to capture new BOINC clients via news articles about alpha and beta projects.