2025-04-27 07:49:33 -04:00

236 lines
12 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0042) -->
<HTML><HEAD><TITLE>Account AutoDiscovery</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<META content="Microsoft FrontPage 4.0" name=GENERATOR>
<LINK href="nepstyles.css" rel=stylesheet type=text/css>
<STYLE type=text/css></STYLE>
<meta name="Microsoft Border" content="none">
</HEAD>
<BODY bgColor=#ffffff link=#4e8ff1><!--webbot bot="Include" U-Include="../../commonpages/header.htm" TAG="BODY" startspan --><strong>[../../commonpages/header.htm]</strong><!--webbot bot="Include" endspan i-checksum="53214" -->
<P align=left>&nbsp;</P>
<TABLE border=0 width=640>
<TBODY>
<TR>
<TD vAlign=top width=110>
<H3></H3></TD>
<TD vAlign=top width=530>
<P class=header-page>Account AutoDiscovery RFC</P>
</TD></TR>
<TR>
<TD vAlign=top width=110></TD>
<TD vAlign=top width=530>&nbsp; </TD></TR>
<TR>
<TD vAlign=top width=110>
<DIV></DIV></TD>
<TD vAlign=top width=530>
<P class=header>Goal:</P>
<HR SIZE=1>
<P>This document will describe the Account AutoDiscovery protocol.
<P>&nbsp;
<P class=header><b>How AutoDiscovery Works:</b></P>
<HR SIZE=1>
<p>Account AutoDiscovery will use an email address to look up information
needed to configure software.&nbsp; Given a email name (like <a href="mailto:JohnDoe@yahoo.com">JohnDoe@psyco.psychdept.libarts.ucsd.edu</a>),
a list of possible AutoDiscover servers are generated.&nbsp; The path
&quot;/AutoDiscover/&quot; on the server &quot;_autodiscover.&lt;domainname&gt;&quot; is contacted to provide the
information.&nbsp; If the information still isn't retrieved, then a public service is
tried.&nbsp;&nbsp;</p>
<P>&nbsp;</P>
<P>Each server is sent an HTTP Post command.&nbsp; The post
data is an XML request for a certain type of information.&nbsp; The
request the server to retrieve settings for a particular type of account,
like an email account or a virtual private network account.&nbsp; The HTTP
Post header data is XML that will contain
information that will help execute the request.&nbsp; For mail, it will
include the email address, the protocols the client software supports, the
web browser installed, the kind of proxy in use, and the types of
authentication that can be used.</P>
<P>&nbsp;</P>
<P>The server can then return an XML file that will provide the
information needed for the client to configure local software to get the
user to their destination.</P>
<P>&nbsp;</P>
<P><A href="#top"><IMG border=0 height=26 src="top.gif" width=23></A>
<P>
&nbsp;
<P class=header><b>How Is the Request Made:</b></P>
<HR SIZE=1>
<P>The HTTP POST headers contain information about the request in
XML.&nbsp; Multiple ACCOUNT, PROTOCOL, and APP elements are allowed.&nbsp;
There are two levels in a request, a list of accounts to configure (for
example: email, connection) and the second level is the protocol to use in
that account.&nbsp; The PROTOCOL level is OPTIONAL and is added if there
are settings specific to a certain protocol.</P>
<P>&nbsp;</P>
<P>Additionally, there can be one or more &lt;APP&gt; element under an
ACCOUNT or PROTOCOL that will provide application specific settings.&nbsp;
The manufacturer of the application needs to define the name space to
define the hierarchy under this element.</P>
<P>&nbsp;</P>
<P>This RFC will describe some ACCOUNTs and PROTOCOLs.&nbsp; New accounts
and protocols can be defined but they need to have a specified xml
namespace.&nbsp;</P>
<P>&nbsp;</P>
<P><b>The request XML format is:&nbsp;</b></P>
<pre>&lt;?xml version=&quot;1.0&quot; ?&gt;
&lt;AUTODISCOVERY xmlns=&quot;http://www.w3c.org/dtd/AutoDiscovery&quot;
xmlns:app1=&quot;http://www.app.com/dtd/MyApp1&quot;
xmlns:app2=&quot;http://www.app2.com/dtd/MyApp2&quot;&gt;
&lt;REQUEST&gt;
&lt;ACCOUNT&gt;
&lt;TYPE&gt;email&lt;/TYPE&gt; &lt;!--The kind of information requested--&gt;
&lt;VERSION&gt;0.1&lt;/VERSION&gt; &lt;!--The version of the request--&gt;
&lt;RESPONSEVER&gt;0.1&lt;/RESPONSEVER&gt; &lt;!--The version of the response the client supports--&gt;
&lt;LANG&gt;en&lt;/LANG&gt; &lt;!--The user's language--&gt;
&lt;!--The Following is specific to TYPE email--&gt;
&lt;EMAIL&gt;bryanst@yahoo.com&lt;/EMAIL&gt; &lt;!--The email address to request email settings--&gt;
&lt;PROTOCOL&gt;
&lt;TYPE&gt;POP3&lt;/TYPE&gt; &lt;!--The kind of information requested--&gt;
&lt;!--If you needed to send information to the server--&gt;
&lt;!--specific to the protocol, it would go here.--&gt;
&lt;/PROTOCOL&gt;
&lt;app1:APP&gt;
&lt;NAME&gt;com.microsoft.Exchange&lt;/NAME&gt; &lt;!--A unique identifier of the application--&gt;
&lt;!--If you needed to send app specific information to the server--&gt;
&lt;!--it would go here.--&gt;
&lt;/app1:APP&gt;
&lt;/ACCOUNT&gt;
&lt;/REQUEST&gt;
&lt;REQUEST&gt; ... &lt;/REQUEST&gt;
&lt;/AUTODISCOVERY&gt;
<A href="#top"><IMG border=0 height=26 src="top.gif" width=23></A></pre>
<P>
&nbsp;
<P class=header><b>How Is the Response Is:</b></P>
<HR SIZE=1>
<P><b>The response XML format is:&nbsp;</b></P>
<P>The HTTP POST headers contain information about the request in
XML.&nbsp; Multiple ACCOUNT, PROTOCOL, and APP elements are allowed.&nbsp;
There are two levels in a request, a list of accounts to configure (for
example: email, connection) and the second level is the protocol to use in
that account.&nbsp; The PROTOCOL level is OPTIONAL and is added if there
are settings specific to a certain protocol.</P>
<P>&nbsp;</P>
<P>Additionally, there can be one or more &lt;APP&gt; element under an
ACCOUNT or PROTOCOL that will provide application specific settings.&nbsp;
The manufacturer of the application needs to define the name space to
define the hierarchy under this element.</P>
<P>&nbsp;</P>
<pre>&lt;?xml version=&quot;1.0&quot; ?&gt;
&lt;AUTODISCOVERY xmlns=&quot;http://www.w3c.org/dtd/AutoDiscovery&quot;
xmlns:app1=&quot;http://www.app.com/dtd/MyApp1&quot;
xmlns:app2=&quot;http://www.app2.com/dtd/MyApp2&quot;&gt;
&lt;USER&gt;
&lt;DISPLAYNAME&gt;Bryan T. Starbuck&lt;/DISPLAYNAME&gt; &lt;!--The user's display Name--&gt;
&lt;LDAP&gt;&lt;!--LDAP URL--&gt;&lt;/LDAP&gt; &lt;!--FUTURE: We could provide an URL to an LDAP server for more information.--&gt;
&lt;!-- You can only access this information after being authenticated.--&gt;
&lt;VCARD/&gt; &lt;!--FUTURE: vCard information--&gt;
&lt;/USER&gt;
&lt;RESPONSE&gt;
&lt;RESPONSEVER&gt;0.1&lt;/RESPONSEVER&gt; &lt;!--Version of the response the server uses. MUST be less than REQUEST's RESPONSEVER.--&gt;
&lt;LANG&gt;en&lt;/LANG&gt; &lt;!--The response language--&gt;
&lt;ACCOUNT&gt;
&lt;TYPE&gt;email&lt;/TYPE&gt;
&lt;!--Either--&gt;
&lt;ACTION&gt;redirect | message | settings&lt;/ACTION&gt;
&lt;!--redirect: Redirect to another server--&gt;
&lt;URL&gt; &lt;!--redirect URL--&gt;&lt;/URL&gt;
&lt;!--message: Display this message to the user because the information could not be retrieved--&gt;
&lt;MESSAGE&gt; &lt;!--the message--&gt;&lt;/MESSAGE&gt;
&lt;!--settings: Settings will be provided--&gt;
&lt;!--Protocols are listed in order of server preference.--&gt;
&lt;PROTOCOL&gt;
&lt;TYPE&gt;POP3&lt;/TYPE&gt; &lt;!--Type of Protocol--&gt;
&lt;SERVER&gt;mail.pop.yahoo.com&lt;/SERVER&gt; &lt;!--ID Addr or DNS name of server--&gt;
&lt;PORT&gt;Default&lt;/PORT&gt; &lt;!--&quot;Default&quot; or the port number. Default means the default for that protocol--&gt;
&lt;LOGINNAME&gt;Default&lt;/LOGINNAME&gt; &lt;!--The login name to use when logging in over POP3, SMTP, or IMAP type protocols.--&gt;
&lt;!--If not specified, caller should use the first part of the email name.--&gt;
&lt;SPA&gt;on | off&lt;/SPA&gt; &lt;!--Should SPA (Secure Password Authentication) be used?--&gt;
&lt;SSL&gt;on | off&lt;/SSL&gt; &lt;!--Is SSL supported?--&gt;
&lt;AUTHREQUIRED&gt;on | off&lt;/AUTHREQUIRED&gt; &lt;!--Is Authenication Required? (Normally SMTP specific)--&gt;
&lt;USEPOPAUTH&gt;on | off&lt;/USEPOPAUTH&gt; &lt;!--SMTP Only: Use the Auth settings for POP3 for SMTP--&gt;
&lt;/PROTOCOL&gt;
&lt;app1:APP&gt;
&lt;NAME&gt;com.microsoft.Exchange&lt;/NAME&gt; &lt;!--A unique identifier of the application--&gt;
&lt;!--App specific settings can go here.--&gt;
&lt;/app1:APP&gt;
&lt;/ACTION&gt;
&lt;/ACCOUNT&gt;
&lt;/RESPONSE&gt;
&lt;/AUTODISCOVERY&gt;
<A href="#top"><IMG border=0 height=26 src="top.gif" width=23></A></pre>
<P>&nbsp;</P>
<P class=header>Setting Up A Server:</P>
<HR SIZE=1>
<p>
The trick is to make it trivial to setup a server. Most ISPs only need to do this:</p>
<ul>
<li>
Create a DNS entry that points _ AutoDiscover.&lt;domainname&gt; to an existing web server.</li>
<li>
Create a "AutoDiscover" subdirectory.</li>
<li>
Create the XML file that will be returned as the default file for that
directory.&nbsp; Web servers normally just return .asp, .htm, or .html
files so either the server can be setup to return a static XML file or
.asp page can do a server side redirect to the XML file.</li>
</ul>
<p>
<br>
This only works if the exact same information can be returned for all users.&nbsp;
If the admin has a couple of servers, they can use server side scripts (ASP or CGI) to redirect to one of a couple of XML files.&nbsp;
Or a database can be used to customize the contents of the XML to return.<br>
<br>
<A href="#top"><IMG border=0 height=26 src="top.gif" width=23></A>
</p>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P class=header><b>Related Information:</b>
</P>
<HR>
<ul>
<li>IETF WPAD: <a href="ftp://ftp.ietf.org/internet-drafts/draft-melve-clientcache-com-00.txt">Web
Proxy Autodiscovery Protocol</a>.&nbsp; Also see <a href="http://msdn.microsoft.com/standards/top150/network.asp">http://msdn.microsoft.com/standards/top150/network.asp</a>,
and Netscape's <a href="http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html">PAC
format</a>.</li>
<li>Code: \nt\private\inet\wininet\<span style="mso-fareast-font-family: Times New Roman; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Apdetect\apdetect.cxx,
DetectAutoProxyUrl(LPCSTR pszAutoProxyUrl, DWORD dwAutoProxyUrlLength,
DWORD dwDetectFlags).</span>
</li>
</ul>
<P><A href="#top"><IMG border=0
height=26 src="top.gif"
width=23></A></P></TD></TR>
<TR>
<TD vAlign=top width=110></TD>
<TD vAlign=top width=530>&nbsp; </TD></TR>
<TR>
<TD vAlign=top width=110></TD>
<TD vAlign=top width=530>
<P class=modified>last updated on <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%m/%d/%y" startspan -->02/17/00<!--webbot bot="Timestamp" endspan i-checksum="12328" -->
by <a href="mailto:BryanSt@microsoft.com">BryanSt</a> </P></TD></TR></TBODY></TABLE>
<P class=modified>&nbsp;</P></BODY></HTML>