<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-cscholz-mmox-architecture-00"
     ipr="trust200902">
  <front>
    <title abbrev="MMOX Architecture">MMOX Architecture Discussion</title>

    <author fullname="Christian Scholz" initials="C.S." surname="Scholz">
      <organization>COM.lounge</organization>

      <address>
        <postal>
          <street>Hanbrucher Str. 33</street>
          <code>52064</code>
		  <city>Aachen</city>
          <region>NRW</region>
          <country>Germany</country>
        </postal>
		<email>cs@comlounge.net</email>
      </address>
    </author>

    <date day="04" month="March" year="2009" />
	<keyword>Virtual Worlds</keyword>
	<keyword>Interoperability</keyword>
	<keyword>MMOX</keyword>
	<keyword>Social Networks</keyword>
	<keyword>Requirements</keyword>

    <workgroup>MMOX pre-BOF</workgroup>

    <abstract>
      <t>This document tries to summarize the different problem areas in the
      MMOX field and proposed an approach to build interoperability from the
      bottom up starting with a flexible foundation. It also aims at
      identifying problem spaces which are more general than the virtual
      worlds field and also touch on problems found in today's social
      networks.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>From the discussion on the MMOX mailing list it became clear that
      </t>

      <t><list style="symbols">
          <t>there are several fields people want to work on</t>

          <t>there is a big variety of virtual worlds out there which for now
          at least will not be fully compatible</t>

          <t>that many problems discussed are broader than just the area of
          massively multi-player worlds.</t>
        </list>In order to come to a usable work result a way needs to be
      found to make those worlds at least as compatible as possible or to give
      them means to negotiate their capabilities.</t>

      <t>Moreover the problems which cross the boundaries to e.g. social
      networks should be solved in a more general way and with participation
      of the respective communities.</t>

      <t></t>

      <section anchor="ind_prob" title="The individual problem fields">
        <t>As it was pointed out in the list we at least have the following
        fields which are identified:</t>

        <t><list style="symbols">
            <t>Federated/portable Identity</t>

            <t>Distributed authorization</t>

            <t>Service Discovery</t>

            <t>data formats (e.g. LLSD)</t>

            <t>world simulation protocols</t>

            <t>presence protocols/services</t>

            <t>Licensing/permissions/DRM</t>
          </list>All these problems are not really overlapping each other but
        might be seen next to each other or in different layers.</t>

        <t></t>
      </section>

      <section anchor="negotiate_prob" title="Full or partial compatibility">
        <t>There are a lot of virtual worlds vendors out there and most of
        them have a different approach on how they handle 3D simulation, how
        they transfer data and so on. There is eventually not much in common
        and most vendors won't be willing to change their entire system for
        now.</t>

        <t>In order to nevertheless reach some interoperability we need to
        find a way to negotiate capabilities between those worlds and define
        if maybe a gateway can translate from one world to another or if some
        features might simply not be available.</t>

        <t></t>
      </section>

      <section anchor="broad_prob"
               title="Problems broader than the MMOX space">
        <t>There are some problem fields of the list in <xref
        target="ind_prob"></xref> which are not only relevant to virtual
        worlds but also for e.g. social networks. These are especially</t>

        <t><list style="symbols">
            <t>Federated/portable identity</t>

            <t>Distributed Authorization</t>

            <t>Service Discovery</t>

            <t>Presence Protocols</t>

            <t>Licensing/permissions/DRM</t>
          </list>It's clear from that list that only really the 3D related
        services are specific to the MMOX field. That is because one can see
        virtual worlds as just specialized social networks easily.</t>

        <t>The question is now how we can proceed with these problems to find
        a solution which also integrates with other parties such as the social
        networking area.</t>
      </section>
    </section>

    <section title="Proposal">
      <t>As describe in <xref target="negotiate_prob"></xref> we have a lot of
      existing protocols and data formats to consider. Because of this a full
      standardization in only one standard is not very likely for now. What
      can be done though is to start to build a foundation on which services,
      be they existing social networks or virtual worlds, can interoperate to
      a certain level. A foundation might at least enable the following
      things:</t>

      <t><list style="symbols">
          <t>Portable Idenity</t>

          <t>Distributed Authorization</t>

          <t>Service Discovery</t>
        </list></t>

      <t>After that one can specify those individual services and data formats
      which MAY be used while they MUST support the above specifications.</t>

      <t></t>

      <section title="Three initial problem fields">
        <t>There are three problem fields which make sense to discuss
        first.</t>

        <section title="Portable Identity">
          <t>Portable Identity means that a user does not have to register on
          every new service but she can simply login on all networks/worlds
          supporting the specification coming out of the MMOX WG. There is
          also a lot of prior art, most prominent example probable being
          OpenID. As OpenID is gaining a lot of momentum in the social
          networking scene it makes sense to define it as "MUST
          implement".</t>

          <t></t>
        </section>

        <section title="Distributed Authorization">
          <t>In a decentralized world not only one service holds all the data
          of a user but there might be many services which all hold partial
          data. Examples of such data sets can be profile, friends connection,
          group memberships, assets such as photos or 3D objects and much
          more. Also service providers can provide several services as e.g.
          world simulation, Instant Messaging services and so on.</t>

          <t>All these services need to protect their resources though and
          MUST NOT give access to unauthorized sources. Thus the user needs to
          authorize these services to a new third party service for it to have
          access to them.</t>

          <t>This again is a topic discussed not only for virtual worlds but
          also for social networks or for HTTP in general. Here one solution
          gaining momentum and also being chartered as an IETF WG is
          OAuth<xref target="OAUTH"></xref>. It allows a service A to access
          resources of service B on behalf of the user. The user needs to
          authorize access but can at any point also withdraw that
          authorization.</t>

          <t>The problem which still needs to be solved is mass authorization
          though as OAuth relies on redirects to a service and back to the
          consumer which is very user unfriendly if there is more than one
          service to authorize.</t>

          <t></t>
        </section>

        <section title="Service Discovery">
          <t>Whenever you want to access a service you need to know it's URL
          (if HTTP is used). Moreoever you want to check what services a
          certain virtual world supports. In order to do that a means for
          Service Disovery need to be found. This means that a client which
          wants to do service discovery accesses a well known URL as e.g. the
          main domain name and performs a process which in the end results in
          a list of services distinguished by a type. The client can then
          check which service types and versions of those it supports and can
          start with service authorization on those.</t>

          <t>The same is true for user centric services such as profiles,
          friends lists and so on. Here the endpoint from which to discover a
          user's services is a URL which identifies the user such as an
          OpenID. In fact OpenID uses YADIS which is nothing else than a
          service disovery on the OpenID URL to check which identification
          methods are supported.</t>

          <t>Right now the field of service discovery is a bit in flux. As the
          document format and the way of discovering the location of that
          document so far <xref target="XRDS">XRDS</xref>has been used but
          work is under way to separate the discovery mechanism from the
          actual format as well as coming up with a new format for describing
          services. An Internet Draft regarding service discovery can be found
          at <xref target="DISCOVER"></xref></t>
        </section>
      </section>

      <section title="An example workflow">
        <t>In order to demonstrate how those three areas can work together
        here is an example.</t>

        <t>The goal here is that a user wants to login to a certain virtual
        world.</t>

        <t><list style="numbers">
            <t>The user enters his unique identification URL into the
            respective field in a client. He also enters the URL of the
            virtual world he wants to enter.</t>

            <t>The client does service discovery on the virtual world URL to
            check for available 3D protocols</t>

            <t>The client receives a list of supported 3D protocols of that
            virtual world and selects the best one</t>

            <t>The client established a connection to the virtual world.</t>

            <t>The virtual world performs service discovery on the user's
            identity URL and finds an authentication service suitable for
            it.</t>

            <t>The virtual world instantiates an auhentication for the user.
            In case of OpenID it means to redirect the user to his OpenID
            provider where he authenticates.</t>

            <t>The OpenID provider sends a success message back to the virtual
            world which now knows that the user "owns" the URL.</t>

            <t>The virtual world now checks for further services such as
            profile information or friends list.</t>

            <t>For each service the user is asked if he wants to use it (if
            not essential) and will then be redirected to that service to
            authorize access for that virtual world</t>

            <t>The virtual world retrieves access tokens that way and can then
            access a user's protected resources such as profile or friends
            list by using that token.</t>
          </list>This is only a small example and it has still many
        shortcomings in e.g. the authorization of each individual service. If
        this is solved it is extensible though and further standardization
        might work on defining those wire level protocols which are needed for
        simulating a 3D world or transferring objects in a secure way.</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>

      <t>Note to RFC Editor: this section may be removed on publication as an
      RFC.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document proposes a process for authentication and authorization
      which need to be secure. We rely on the work being done in the
      respective protocols in that field, namely OpenID and OAuth.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
	  &RFC2119;
	  
    </references>

    <references title="Informative References">
      <reference anchor="OAUTH">
        <front>
          <title>OAuth Core 1.0</title>

          <author fullname="Eran Hammer-Lahav" initials="E."
                  surname="Hammer-Lahav">
            <organization></organization>
          </author>

          <date />
        </front>
		<format type="HTML" target="http://oauth.net/core/1.0/" />
      </reference>

      <reference anchor="DISCOVER">
        <front>
          <title>Link-based Resource Descriptor Discovery</title>

          <author fullname="Eran Hammer-Lahav" initials="E."
                  surname="Hammer-Lahav">
            <organization></organization>
          </author>

          <date />
        </front>
		<format type="HTML" target="http://tools.ietf.org/html/draft-hammer-discovery-02" />
      </reference>

      <reference anchor="XRDS">
        <front>
          <title>Extensible Resource Identifier (XRI) Resolution V2.0</title>

          <author fullname="Gabe Wachob" initials="G." surname="Wachob">
            <organization></organization>
          </author>

          <author fullname="Chasen" initials="L." surname="Chasen">
            <organization></organization>
          </author>

          <author fullname="Tan" initials="W." surname="Tan">
            <organization></organization>
          </author>

          <author fullname="Churchill" initials="S." surname="Churchill">
            <organization></organization>
          </author>

          <date />
        </front>
		<format type="HTML" target="http://docs.oasis-open.org/xri/2.0/specs/xri-resolution-V2.0.html" />
      </reference>
    </references>
  </back>
</rfc>
