| Abstract: | A protocol for displaying web-based tabs in clients. |
| Author: | Richard Dobson |
| Copyright: | © 1999 - 2011 XMPP Standards Foundation. SEE LEGAL NOTICES. |
| Status: | Deferred |
| Type: | Informational |
| Version: | 0.4 |
| Last Updated: | 2004-03-14 |
WARNING: Consideration of this document has been Deferred by the XMPP Standards Foundation. Implementation of the protocol described herein is not recommended.
1. Introduction
2. Requirements
3. Use Cases
3.1. Service Discovery
3.2. Retrieving list of web tabs
3.3. Private storage of preferences
3.4. Service authentication
4. Implementation Notes
5. Security Considerations
6. IANA Considerations
7. XMPP Registrar Considerations
Appendices
A: Document Information
B: Author Information
C: Legal Notices
D: Relation to XMPP
E: Discussion Venue
F: Requirements Conformance
G: Notes
H: Revision History
Webtabs are a way for servers to specify a number to web pages which can be used in clients and displayed like the web-based services in Yahoo Messenger, MSN Messenger and JIM. This enables a server administrator to easily create services for Jabber clients and also help to integrate Jabber clients with existing web-based applications.
The motivations for this document are:
Service Discovery [1] SHALL be used for discovering support for webtabs on servers.
Example 1. Disco info response containing support for webtabs
<iq
type='result'
from='domain.com'
to='user@domain/resource'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<feature var='http://jabber.org/protocol/webtab'/>
</query>
</iq>It is RECOMMENDED that the jabber server itself (JSM in jabberd) serves the webtab list, but if desired by the server implementor they MAY be served by a separate host/component.
Example 2. Separate webtab host specified by server
<iq
type='result'
from='domain.com'
to='user@domain/resource'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#items'>
<item
jid='webtabs.domain.com'
name='Webtab Provider'/>
</query>
</iq>
<iq
type='result'
from='webtabs.domain.com'
to='user@domain/resource'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<feature var='http://jabber.org/protocol/webtab'/>
</query>
</iq>The list of available web tabs is retrieved using the following protocol:
Example 3. Request for list of webtabs available on a server
<iq
to='domain.com'
type='get'
id='webtab1'>
<query xmlns='http://jabber.org/protocol/webtab'/>
</iq>Example 4. Response from server listing the available webtabs
<iq
to='user@domain.com/resource'
from='domain.com'
type='result'
id='webtab1'>
<query xmlns='http://jabber.org/protocol/webtab'>
<webtab type='email' id='em' name='Webmail'>
http://tab.server.com/mail/
</webtab>
<webtab type='bookmark' id='bk' name='Bookmarks'>
http://webtab.bookmarks.example.com/
</webtab>
<webtab type='calendar' id='cal' name='Calendar'>
http://calendar.example.com/webtab/
</webtab>
<webtab type='news' id='nws' name='BBC News'>
http://news.bbc.co.uk/webtab/
</webtab>
</query>
</iq>The webtab contains CDATA which is the URL of the webtab, the webtab is an HTML page retrieved from an HTTP server using a standard browser which you embed into your client UI using a technique such as the IWebBrowser2 control interface on windows which allows you to embed either the IE or Gecko engines depending on what you have installed, this data is REQUIRED.
The "type" attribute tells the client what the service being provided is, this allows a client to display icons on the tabs to represent them, handling of the type in clients is OPTIONAL, inclusion of this attribute is REQUIRED (See "XMPP Registrar Considerations" for examples of values for this attribute).
The "name" attribute is the offical name of a particular service this can be displayed as the tab name, this attribute is REQUIRED.
The "id" attribute is a unique identifier for a service which you can use to refer to it later, used for when using private storage to store a preference to which tabs should be visible, this attribute is REQUIRED.
Private XML Storage [2] SHALL be used for storing webtab preferences.
Example 5. Request for current webtab preferences
<iq
to='domain.com'
type='get'
id='prefs1'>
<query xmlns='jabber:iq:private'>
<prefs xmlns="webtab:prefs"/>
</query>
</iq>Example 6. Response with webtab preferences
<iq
to='user@domain.com/resource'
from='domain.com'
type='result'
id='prefs1'>
<query xmlns='jabber:iq:private'>
<prefs xmlns='webtab:prefs'>
<webtab id='em' visible='true'/>
<webtab id='bk' visible='false'/>
<webtab id='cal' visible='true'/>
</prefs>
</query>
</iq>The "id" attribute matches the "id" attribute from the list of webtabs, this attribute is used to match these preferences to the webtab in question, this attribute is REQUIRED.
The "visible" attribute tells the client that a tab SHOULD or SHOULD NOT be hidden, a client SHOULD provide an interface for managing the visibility of the tabs and updating the preferences appropriately, this attribute is REQUIRED.
It is RECOMMENDED that a mechanism such as HTTP Authentication using Jabber Tickets [3] be used for automatic service authentication.
The following guidelines may assist client developers.
It is recommended that XEP-0101 be used to provide transparent authentication of the webtabs.
No IANA interaction required.
The XMPP Registrar [4] will need to register the new namespace of "http://jabber.org/protocol/webtab" and possibly the list of offical types will need to be managed too.
Table 1: Possible types for webtabs
| Type | Purpose |
|---|---|
| Web based email | |
| calendar | Web based calendar |
| bookmark | Web based bookmark management service |
| news | General news headlines |
| news/sport | Sport headlines |
Series: XEP
Number: 0088
Publisher: XMPP Standards Foundation
Status:
Deferred
Type:
Informational
Version: 0.4
Last Updated: 2004-03-14
Approving Body: XMPP Council
Dependencies: XMPP Core, XEP-0030, XEP-0049
Supersedes: None
Superseded By: None
Short Name: webtab
Source Control:
HTML
This document in other formats:
XML
PDF
Email:
richard@dobson-i.net
JabberID:
richard@dobson-i.net
The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core (RFC 3920) and XMPP IM (RFC 3921) specifications contributed by the XMPP Standards Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocol defined in this document has been developed outside the Internet Standards Process and is to be understood as an extension to XMPP rather than as an evolution, development, or modification of XMPP itself.
The primary venue for discussion of XMPP Extension Protocols is the <standards@xmpp.org> discussion list.
Discussion on other xmpp.org discussion lists might also be appropriate; see <http://xmpp.org/about/discuss.shtml> for a complete list.
Errata can be sent to <editor@xmpp.org>.
The following requirements keywords as used in this document are to be interpreted as described in RFC 2119: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".
1. XEP-0030: Service Discovery <http://xmpp.org/extensions/xep-0030.html>.
2. XEP-0049: Private XML Storage <http://xmpp.org/extensions/xep-0049.html>.
3. XEP-0101: HTTP Authentication using Jabber Tickets <http://xmpp.org/extensions/xep-0101.html>.
4. The XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see <http://xmpp.org/registrar/>.
Note: Older versions of this specification might be available at http://xmpp.org/extensions/attic/
END