<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.50.4134.600" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Distributed Jabber Authentication<BR>by Mike Hearn 
(<A href="mailto:mhearn@neuk.net">mhearn@neuk.net</A>) Jabber: <A 
href="mailto:tweedledee@jabber.org">tweedledee@jabber.org</A></FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial 
size=2>------------------------------------------------------------------------<BR>This 
document will assume knowledge of what network authentication is,<BR>and how 
Microsoft Passport operates.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Jabber network authentication as outlined in this 
prelimary document<BR>will allow for the following things:</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; * Authentication to arbitrary 
third party websites, without prior<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; knowledge 
of that site.<BR>&nbsp;&nbsp;&nbsp; * Authentication to arbitrary services and 
servers, ie FTP servers,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where both server and 
client are jabber aware<BR>&nbsp;&nbsp;&nbsp; * Authentication to services and 
servers for which the client is not<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jabber 
aware.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>_Website authentication_</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>This involves using a special authentication 
website to allow web<BR>browsers to act as an authentication front end. It works 
like this:</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp; 1. User visits site A (mycompany.com) 
and wishes to login. They see<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; one edit 
control, and a login button. They enter their 
network<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address into the edit, and click 
login/submit<BR>&nbsp;&nbsp; 2. Site A sends either a Jabber IQ or a SOAP 
message to the users<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server, that specifies 
the auth type (web), and a return URL.<BR>&nbsp;&nbsp; 3. Site B responds with a 
URL to the authentication website for that<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
server. Each Jabber server has one, we'll assume 
it's<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *http://authenticate.jabber.org* here. 
The URL points to a CGI<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script that Site A 
will redirect to, for instance:</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
*http://authenticate.jabber.org/auth?token=120583asdbf5335sdfgy5767s*<BR>&nbsp;&nbsp; 
4. At this address, the user is presented with a form which asks 
them<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to present credentials (probably a 
password, but could be anything<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - a 
certificate, iris scan, fingerprint data etc.) probably over 
a<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; secure connection.<BR>&nbsp;&nbsp; 5. The 
user presents their credentials and submits. 
The<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; authentication CGI logs into the users 
account to verify their<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; identity, and if clear 
redirects the user to the URL specified in<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the 
original authencation request. At the same time, cookies 
are<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set on the authenicate.jabber.org domain, 
so if another site<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirects to that site in 
future after Step 1, the login process<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is 
automatic.<BR>&nbsp;&nbsp; 6. Once returned to the original site A properly 
authenticated, Site<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A can set a cookie 
containing the username, so from now on when<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
visiting that site you are automatically logged in.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>_Arbitrary services_</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>We will use the example of a jabber aware FTP 
server and client for this<BR>section.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp; 1. User connects to jabber-aware FTP 
server using jabber aware client<BR>&nbsp;&nbsp; 2. User gives client username 
and credentials (password, certificate,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
whatever)<BR>&nbsp;&nbsp; 3. User sends username to FTP server.<BR>&nbsp;&nbsp; 
4. FTP server sends message to jabber server via either an IQ or 
SOAP<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asking for "service" 
authentication<BR>&nbsp;&nbsp; 5. Server responds with a token (random number), 
which the FTP server<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then sends to the 
client<BR>&nbsp;&nbsp; 6. FTP client hashes credentials with random number and 
sends to ftp<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server, which forwards this hash 
to the jabberd<BR>&nbsp;&nbsp; 7. Jabber server checks hashed credentials, and 
if clear sends<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message back to FTP server 
announcing this fact, or otherwise<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; information 
about what went wrong.<BR>&nbsp;&nbsp; 8. User is now 
authenticated.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>_Arbitrary services when client is not Jabber 
aware_</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Often,&nbsp; a service may be Jabber aware, but the 
client is not. In this<BR>case, the client will prompt the user for a username 
and password for<BR>its own authentication system, but the user may wish to use 
Jabber<BR>authentication as supported by the server. In this case, 
Instant<BR>Messaging (IM) Authentication can be used.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp; 1. User connects to jabber-aware FTP 
server with legacy client<BR>&nbsp;&nbsp; 2. Client prompts user for username 
and password<BR>&nbsp;&nbsp; 3. Client supplies Jabber network address and blank 
password<BR>&nbsp;&nbsp; 4. FTP server sends SOAP/IQ to server requesting "im" 
authentication.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Server sends a message with 
embedded form to an active IM<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection if 
one, otherwise authentication fails.<BR>&nbsp;&nbsp; 5. Users chat client 
receives message, for instance "Service<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
'SourceForge FTP' at 129.0.44.33 is requesting 
authentication.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Confirm? YES NO" would be 
displayed in the chat client.<BR>&nbsp;&nbsp; 6. User clicks yes which triggers 
reply to server, which takes this<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message and 
replies to FTP service with a clear authentication. <BR>&nbsp;&nbsp; 7. FTP 
server has now authenticated the connection.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>This method utilises the fact that the user is 
probably running the chat<BR>client on the same machine as they are 
authenticating from.<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>_______________________<BR>Michael Hearn<BR><A 
href="mailto:mhearn@neuk.net">mhearn@neuk.net</A><BR>Jabber (jabber.org) <A 
href="mailto:tweedledee@jabber.org">tweedledee@jabber.org</A><BR>ICQ# 
34800568</FONT></DIV></BODY></HTML>