[standards-jig] JEP:0015 Account Transfer

Casey Crabb debug at nafai.dyndns.org
Wed Jan 23 00:59:00 UTC 2002


I would appreciate feedback/discussion on this proposal so I can
continue to refine it. Below is a text version of the JEP; the latest
html version can be found here:
http://nafai.dyndns.org/~crabbkw/acct-xfer-jep-0015v1.1.html
I'll update the CVS copy of the JEP as soon as I have CVS access.

-Casey

-- Text Version Follows --
                           JEP:0015 Account Transfer

  Casey Crabb

               crabbkw at nafai.dyndns.org
               airog at floobin.cx

   Revision History
   Revision 1.1 2002-01-17 Revised by: cwc
   Added more pseudo-protocol information. Added a known issues section.
   Recieved JEP number

   Revision 1.0 2002-01-16 Revised by: psa
   First release to CVS, including editorial changes by the JEP Editor
   and assignment of JEP number.

   Revision 0.9 2002-01-17 Revised by: cwc
   Initial version.

   A proposal for enabling the ability to transfer an account from on
   Jabber server to another.

                                2. Introduction

   The need: The ability to seamlessly transfer an account and all
   relevant roster information from a pre-existing account on one server,
   to a freshly created account on another server. This should not only
   transfer the roster of the person migrating, but it should update the
   roster for everyone who is subscribed to the presence of the person
   migration.

   I have found the need in the past to migrate an account from one
   server to another for various reason. Many of the people who ask me
   about Jabber ask if there is a way to migrate their account from one
   server to another if the need arises. There is no reason Jabber can
   not handle this internally and update all the JID-references
   appropriately.

   Jabber servers come and go, especially ones run by people who are just
   playing with the technology. Computers also die and funding runs out.
   It can be hard on users to have to re-create their rosters everytime
   they have to change to a different server. Admins also want to provide
   an 'out' for their users, so that they feel more secure in the time
   spent setting up rosters. For these reasons there should be a way to
   migrate an account from one server to another.

                                 2. Main body

   A basic overview of the behavior would be as follows. Bob has a jabber
   account on a server, floobin.cx specifically: olduser at floobin.cx. Bob
   knows that the floobin.cx server is going to go down soon and
   therefore needs to find a new jabber server. He realizes that
   jabber.org offers accounts to anyone, so he sets out to migrate his
   account to jabber.org. Bob does not yet have an account on jabber.org.
   Bob creates an account on Jabber.org: bobsnewaccount at jabber.org. Bob
   logs into both bobsnewaccount at jabber.org and olduser at floobin.cx. From
   olduser at floobin.cx he sends the 'I want to migrate my account' packet
   to the bobsnewsaccount at jabber.org. This packet includes a single piece
   of information:the JID to migrate to. From bobsnewsaccount he sees
   that olduser at floobin.cx wants ot migrate to bobsnewaccount at jabber.org.
   bobsnewaccount at jabber.org must authorize this migration. Once the
   migration is authorized the floobin.cx server will start the migration
   process. The first part is to notify each person subscribed to
   olduser at floobin.cx's presence that the account has moved to
   bobsnewaccount at jabber.org. Once that is complete the roster itself
   must be added into bobsnewaccount at jabber.cx's roster. His roster is
   successfully transferred. There are many issues with that remain to be
   dealt with.

2.1 Protocol Example

   This is what the user would send to initiate the process

<iq from='airog at floobin.cx' to='newaccount at jabber.org'>
  <query xmlns='jabber:iq:accountxfer'>
    <ask/>
  </query>
</iq>

   The user receives this on his other account:

<iq from='airog at floobin.cx' to='newaccount at jabber.org'>
  <query xmlns='jabber:iq:accountxfer'>
    <ask/>
  </query>
</iq>

   The user then sends this from his other account:
<iq to='airog at floobin.cx' from='newaccount at jabber.org'>
  <query xmlns='jabber:iq:accountxfer'>
    <allowed/>
  </query>
</iq>

   On acceptance the server on which the old account resides starts the
   migration process by sending this to each person subscribed to the
   user's presence.

<iq from='airog at floobin.cx' to='someoneonmyroster at somewhere.org'>
  <query xmlns='jabber:iq:accountxfer'>
    <newaccount>newaccount at jabber.org</newaccount>
  </query>
</iq>

   Once that update has been sent to all the contacts on the roster the
   floobin.cx server sends to the jabber.org server the query section of
   the roster.xml item. (how are we going to handle transports that have
   been registered?) as follows:

<iq from='airog at floobin.cx' to='someoneonmyroster at somewhere.org'>
  <query xmlns='jabber:iq:accountxfer'>
    [query section of user.xml from server goes here with query tag renamed to 
accountxfer?]
  </query>
</iq>

                          3. Open Issues and Concerns

     * How do we handle transferring transport stuff?
     * Do we give feedback to the initiator when the whole process
       succeeds?
     * Does the server keep an empty account that redirects requests to
       the new account?
     * How do we handle vCard information or server side stored
       preferences? Since the account we're migrating to can be any
       account some of that information might already be there, how do we
       resolve conflicts?
     * SECURITY? How do we manage it?





More information about the Standards mailing list