blob: ce082da54e8d93c0f8818608e5c49efe13118de7 [file] [log] [blame]
刘洪青6266f992017-05-15 21:21:03 +08001<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Windows Authentication How-To</title><style type="text/css" media="print">
2 .noPrint {display: none;}
3 td#mainBody {width: 100%;}
4</style><style type="text/css">
5code {background-color:rgb(224,255,255);padding:0 0.1em;}
6code.attributeName, code.propertyName {background-color:transparent;}
7
8
9table {
10 border-collapse: collapse;
11 text-align: left;
12}
13table *:not(table) {
14 /* Prevent border-collapsing for table child elements like <div> */
15 border-collapse: separate;
16}
17
18th {
19 text-align: left;
20}
21
22
23div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
24 background-color: transparent;
25}
26div.codeBox {
27 overflow: auto;
28 margin: 1em 0;
29}
30div.codeBox pre {
31 margin: 0;
32 padding: 4px;
33 border: 1px solid #999;
34 border-radius: 5px;
35 background-color: #eff8ff;
36 display: table; /* To prevent <pre>s from taking the complete available width. */
37 /*
38 When it is officially supported, use the following CSS instead of display: table
39 to prevent big <pre>s from exceeding the browser window:
40 max-width: available;
41 width: min-content;
42 */
43}
44
45div.codeBox pre.wrap {
46 white-space: pre-wrap;
47}
48
49
50table.defaultTable tr, table.detail-table tr {
51 border: 1px solid #CCC;
52}
53
54table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
55 background-color: #FAFBFF;
56}
57
58table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
59 background-color: #EEEFFF;
60}
61
62table.defaultTable th, table.detail-table th {
63 background-color: #88b;
64 color: #fff;
65}
66
67table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
68 padding: 5px 8px;
69}
70
71
72p.notice {
73 border: 1px solid rgb(255, 0, 0);
74 background-color: rgb(238, 238, 238);
75 color: rgb(0, 51, 102);
76 padding: 0.5em;
77 margin: 1em 2em 1em 1em;
78}
79</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
80 The Apache Tomcat Servlet/JSP Container
81 " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Windows Authentication How-To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
82<ul><li><a href="#Overview">Overview</a></li><li><a href="#Built-in_Tomcat_support">Built-in Tomcat support</a><ol><li><a href="#Domain_Controller">Domain Controller</a></li><li><a href="#Tomcat_instance_(Windows_server)">Tomcat instance (Windows server)</a></li><li><a href="#Tomcat_instance_(Linux_server)">Tomcat instance (Linux server)</a></li><li><a href="#Web_application">Web application</a></li><li><a href="#Client">Client</a></li><li><a href="#References">References</a></li></ol></li><li><a href="#Third_party_libraries">Third party libraries</a><ol><li><a href="#Waffle">Waffle</a></li><li><a href="#Spring_Security_-_Kerberos_Extension">Spring Security - Kerberos Extension</a></li><li><a href="#SPNEGO_project_at_SourceForge">SPNEGO project at SourceForge</a></li><li><a href="#Jespa">Jespa</a></li></ol></li><li><a href="#Reverse_proxies">Reverse proxies</a><ol><li><a href="#Microsoft_IIS">Microsoft IIS</a></li><li><a href="#Apache_httpd">Apache httpd</a></li></ol></li></ul>
83</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
84<p>Integrated Windows authentication is most frequently used within intranet
85environments since it requires that the server performing the authentication and
86the user being authenticated are part of the same domain. For the user to be
87authenticated automatically, the client machine used by the user must also be
88part of the domain.</p>
89<p>There are several options for implementing integrated Windows authentication
90with Apache Tomcat. They are:
91<ul>
92<li>Built-in Tomcat support.</li>
93<li>Use a third party library such as Waffle.</li>
94<li>Use a reverse proxy that supports Windows authentication to perform the
95authentication step such as IIS or httpd.</li>
96</ul>
97The configuration of each of these options is discussed in the following
98sections.</p>
99</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Built-in Tomcat support"><!--()--></a><a name="Built-in_Tomcat_support"><strong>Built-in Tomcat support</strong></a></font></td></tr><tr><td><blockquote>
100<p>Kerberos (the basis for integrated Windows authentication) requires careful
101configuration. If the steps in this guide are followed exactly, then a working
102configuration will result. It is important that the steps below are followed
103exactly. There is very little scope for flexibility in the configuration. From
104the testing to date it is known that:</p>
105<ul>
106<li>The host name used to access the Tomcat server must match the host name in
107the SPN exactly else authentication will fail. A checksum error may be reported
108in the debug logs in this case.</li>
109<li>The client must be of the view that the server is part of the local trusted
110intranet.</li>
111<li>The SPN must be HTTP/&lt;hostname&gt; and it must be exactly the same in all
112the places it is used.</li>
113<li>The port number must not be included in the SPN.</li>
114<li>No more than one SPN may be mapped to a domain user.</li>
115<li>Tomcat must run as the domain account with which the SPN has been associated
116or as domain admin. It is <strong>NOT</strong> recommended to run Tomcat under a
117domain admin user.</li>
118<li>The domain name (<code>DEV.LOCAL</code>) is not case sensitive when used in
119the ktpass command, nor when used in jaas.conf</li>
120<li>The domain must be specified when using the ktpass command</li>
121</ul>
122<p>There are four components to the configuration of the built-in Tomcat
123support for Windows authentication. The domain controller, the server hosting
124Tomcat, the web application wishing to use Windows authentication and the client
125machine. The following sections describe the configuration required for each
126component.</p>
127<p>The names of the three machines used in the configuration examples below are
128win-dc01.dev.local (the domain controller), win-tc01.dev.local (the Tomcat
129instance) and win-pc01.dev.local (client). All are members of the DEV.LOCAL
130domain.</p>
131<p>Note: In order to use the passwords in the steps below, the domain password
132policy had to be relaxed. This is not recommended for production environments.
133</p>
134
135 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Domain Controller"><!--()--></a><a name="Domain_Controller"><strong>Domain Controller</strong></a></font></td></tr><tr><td><blockquote>
136 <p>These steps assume that the server has already been configured to act as a
137 domain controller. Configuration of a Windows server as a domain controller is
138 outside the scope of this how-to. The steps to configure the domain controller
139 to enable Tomcat to support Windows authentication are as follows:
140 </p>
141 <ul>
142 <li>Create a domain user that will be mapped to the service name used by the
143 Tomcat server. In this how-to, this user is called <code>tc01</code> and has a
144 password of <code>tc01pass</code>.</li>
145 <li>Map the service principal name (SPN) to the user account. SPNs take the
146 form <code>
147 &lt;service class&gt;/&lt;host&gt;:&lt;port&gt;/&lt;service name&gt;</code>.
148 The SPN used in this how-to is <code>HTTP/win-tc01.dev.local</code>. To
149 map the user to the SPN, run the following:
150 <div class="codeBox"><pre><code>setspn -A HTTP/win-tc01.dev.local tc01</code></pre></div>
151 </li>
152 <li>Generate the keytab file that the Tomcat server will use to authenticate
153 itself to the domain controller. This file contains the Tomcat private key for
154 the service provider account and should be protected accordingly. To generate
155 the file, run the following command (all on a single line):
156 <div class="codeBox"><pre><code>ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL
157 /princ HTTP/win-tc01.dev.local@DEV.LOCAL
158 /pass tc01pass /kvno 0</code></pre></div></li>
159 <li>Create a domain user to be used on the client. In this how-to the domain
160 user is <code>test</code> with a password of <code>testpass</code>.</li>
161 </ul>
162 <p>The above steps have been tested on a domain controller running Windows
163 Server 2008 R2 64-bit Standard using the Windows Server 2003 functional level
164 for both the forest and the domain.
165 </p>
166 </blockquote></td></tr></table>
167
168 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat instance (Windows server)"><!--()--></a><a name="Tomcat_instance_(Windows_server)"><strong>Tomcat instance (Windows server)</strong></a></font></td></tr><tr><td><blockquote>
169 <p>These steps assume that Tomcat and a Java 6 JDK/JRE have already been
170 installed and configured and that Tomcat is running as the tc01@DEV.LOCAL
171 user. The steps to configure the Tomcat instance for Windows authentication
172 are as follows:
173 </p>
174 <ul>
175 <li>Copy the <code>tomcat.keytab</code> file created on the domain controller
176 to <code>$CATALINA_BASE/conf/tomcat.keytab</code>.</li>
177 <li>Create the kerberos configuration file
178 <code>$CATALINA_BASE/conf/krb5.ini</code>. The file used in this how-to
179 contained:<div class="codeBox"><pre><code>[libdefaults]
180default_realm = DEV.LOCAL
181default_keytab_name = FILE:c:\apache-tomcat-7.0.x\conf\tomcat.keytab
182default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
183default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
184forwardable=true
185
186[realms]
187DEV.LOCAL = {
188 kdc = win-dc01.dev.local:88
189}
190
191[domain_realm]
192dev.local= DEV.LOCAL
193.dev.local= DEV.LOCAL</code></pre></div>
194 The location of this file can be changed by setting the
195 <code>java.security.krb5.conf</code> system property.</li>
196 <li>Create the JAAS login configuration file
197 <code>$CATALINA_BASE/conf/jaas.conf</code>. The file used in this how-to
198 contained:<div class="codeBox"><pre><code>com.sun.security.jgss.krb5.initiate {
199 com.sun.security.auth.module.Krb5LoginModule required
200 doNotPrompt=true
201 principal="HTTP/win-tc01.dev.local@DEV.LOCAL"
202 useKeyTab=true
203 keyTab="c:/apache-tomcat-7.0.x/conf/tomcat.keytab"
204 storeKey=true;
205};
206
207com.sun.security.jgss.krb5.accept {
208 com.sun.security.auth.module.Krb5LoginModule required
209 doNotPrompt=true
210 principal="HTTP/win-tc01.dev.local@DEV.LOCAL"
211 useKeyTab=true
212 keyTab="c:/apache-tomcat-7.0.x/conf/tomcat.keytab"
213 storeKey=true;
214};</code></pre></div>
215 The location of this file can be changed by setting the
216 <code>java.security.auth.login.config</code> system property. The LoginModule
217 used is a JVM specific one so ensure that the LoginModule specified matches
218 the JVM being used. The name of the login configuration must match the
219 value used by the <a href="config/valve.html#SPNEGO_Valve">authentication
220 valve</a>.</li>
221 </ul>
222 <p>The SPNEGO authenticator will work with any <a href="config/realm.html">
223 Realm</a> but if used with the JNDI Realm, by default the JNDI Realm will use
224 the user's delegated credentials to connect to the Active Directory.
225 </p>
226 <p>The above steps have been tested on a Tomcat server running Windows Server
227 2008 R2 64-bit Standard with an Oracle 1.6.0_24 64-bit JDK.</p>
228 </blockquote></td></tr></table>
229
230 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat instance (Linux server)"><!--()--></a><a name="Tomcat_instance_(Linux_server)"><strong>Tomcat instance (Linux server)</strong></a></font></td></tr><tr><td><blockquote>
231 <p>This was tested with:</p>
232 <ul>
233 <li>Java 1.7.0, update 45, 64-bit</li>
234 <li>Ubuntu Server 12.04.3 LTS 64-bit</li>
235 <li>Tomcat 8.0.x (r1546570)</li>
236 </ul>
237 <p>It should work with any Tomcat 7 release from 7.0.12 onwards although it is
238 recommended that the latest stable release is used.</p>
239 <p>The configuration is the same as for Windows but with the following
240 changes:</p>
241 <ul>
242 <li>The Linux server does not have to be part of the Windows domain.</li>
243 <li>The path to the keytab file in krb5.ini and jass.conf should be updated
244 to reflect the path to the keytab file on the Linux server using Linux
245 style file paths (e.g. /usr/local/tomcat/...).</li>
246 </ul>
247 </blockquote></td></tr></table>
248
249 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Web application"><!--()--></a><a name="Web_application"><strong>Web application</strong></a></font></td></tr><tr><td><blockquote>
250 <p>The web application needs to be configured to the use Tomcat specific
251 authentication method of <code>SPNEGO</code> (rather than BASIC etc.) in
252 web.xml. As with the other authenticators, behaviour can be customised by
253 explicitly configuring the <a href="config/valve.html#SPNEGO_Valve">
254 authentication valve</a> and setting attributes on the Valve.</p>
255 </blockquote></td></tr></table>
256
257 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Client"><strong>Client</strong></a></font></td></tr><tr><td><blockquote>
258 <p>The client must be configured to use Kerberos authentication. For Internet
259 Explorer this means making sure that the Tomcat instance is in the "Local
260 intranet" security domain and that it is configured (Tools &gt; Internet
261 Options &gt; Advanced) with integrated Windows authentication enabled. Note that
262 this <strong>will not</strong> work if you use the same machine for the client
263 and the Tomcat instance as Internet Explorer will use the unsupported NTLM
264 protocol.</p>
265 </blockquote></td></tr></table>
266
267 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="References"><strong>References</strong></a></font></td></tr><tr><td><blockquote>
268 <p>Correctly configuring Kerberos authentication can be tricky. The following
269 references may prove helpful. Advice is also always available from the
270 <a href="http://tomcat.apache.org/lists.html#tomcat-users">Tomcat users
271 mailing list</a>.</p>
272 <ol>
273 <li><a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2006/10/19/512.aspx">
274 IIS and Kerberos</a></li>
275 <li><a href="http://spnego.sourceforge.net/index.html">
276 SPNEGO project at SourceForge</a></li>
277 <li><a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jgss/tutorials/index.html">
278 Oracle JGSS tutorial</a></li>
279 <li><a href="https://cwiki.apache.org/confluence/display/GMOxDOC21/Using+SPNEGO+in+Geronimo#UsingSPNEGOinGeronimo-SettinguptheDomainControllerMachine">
280 Geronimo configuration for Windows authentication</a></li>
281 <li><a href="http://blogs.msdn.com/b/openspecification/archive/2010/11/17/encryption-type-selection-in-kerberos-exchanges.aspx">
282 Encryption Selection in Kerberos Exchanges</a></li>
283 <li><a href="http://support.microsoft.com/kb/977321">Supported Kerberos Cipher
284 Suites</a></li>
285 </ol>
286 </blockquote></td></tr></table>
287
288</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Third party libraries"><!--()--></a><a name="Third_party_libraries"><strong>Third party libraries</strong></a></font></td></tr><tr><td><blockquote>
289
290 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Waffle"><strong>Waffle</strong></a></font></td></tr><tr><td><blockquote>
291 <p>Full details of this solution can be found through the
292 <a href="http://waffle.codeplex.com/" rel="nofollow">Waffle web site</a>. The
293 key features are:</p>
294 <ul>
295 <li>Drop-in solution</li>
296 <li>Simple configuration (no JAAS or Kerberos keytab configuration required)
297 </li>
298 <li>Uses a native library</li>
299 </ul>
300 </blockquote></td></tr></table>
301
302 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Spring Security - Kerberos Extension"><!--()--></a><a name="Spring_Security_-_Kerberos_Extension"><strong>Spring Security - Kerberos Extension</strong></a></font></td></tr><tr><td><blockquote>
303 <p>Full details of this solution can be found through the
304 <a href="http://static.springsource.org/spring-security/site/extensions/krb/index.html" rel="nofollow"> Kerberos extension web site</a>. The key features are:</p>
305 <ul>
306 <li>Extension to Spring Security</li>
307 <li>Requires a Kerberos keytab file to be generated</li>
308 <li>Pure Java solution</li>
309 </ul>
310 </blockquote></td></tr></table>
311
312 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO project at SourceForge"><!--()--></a><a name="SPNEGO_project_at_SourceForge"><strong>SPNEGO project at SourceForge</strong></a></font></td></tr><tr><td><blockquote>
313 <p>Full details of this solution can be found through the
314 <a href="http://spnego.sourceforge.net/index.html/" rel="nofollow">project
315 site</a>. The key features are:</p>
316 <ul>
317 <li>Uses Kerberos</li>
318 <li>Pure Java solution</li>
319 </ul>
320 </blockquote></td></tr></table>
321
322 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Jespa"><strong>Jespa</strong></a></font></td></tr><tr><td><blockquote>
323 <p>Full details of this solution can be found through the
324 <a href="http://www.ioplex.com/" rel="nofollow">project web site</a>The key
325 features are:</p>
326 <ul>
327 <li>Pure Java solution</li>
328 <li>Advanced Active Directory integration</li>
329 </ul>
330 </blockquote></td></tr></table>
331</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reverse proxies"><!--()--></a><a name="Reverse_proxies"><strong>Reverse proxies</strong></a></font></td></tr><tr><td><blockquote>
332
333 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Microsoft IIS"><!--()--></a><a name="Microsoft_IIS"><strong>Microsoft IIS</strong></a></font></td></tr><tr><td><blockquote>
334 <p>There are three steps to configuring IIS to provide Windows authentication.
335 They are:</p>
336 <ol>
337 <li>Configure IIS as a reverse proxy for Tomcat (see the
338 <a href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html">
339 IIS Web Server How-To)</a>.</li>
340 <li>Configure IIS to use Windows authentication</li>
341 <li>Configure Tomcat to use the authentication user information from IIS by
342 setting the tomcatAuthentication attribute on the <a href="config/ajp.html">
343 AJP connector</a> to <code>false</code>. Alternatively, set the
344 tomcatAuthorization attribute to <code>true</code> to allow IIS to
345 authenticate, while Tomcat performs the authorization.</li>
346 </ol>
347 </blockquote></td></tr></table>
348
349 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache httpd"><!--()--></a><a name="Apache_httpd"><strong>Apache httpd</strong></a></font></td></tr><tr><td><blockquote>
350 <p>Apache httpd does not support Windows authentication out of the box but
351 there are a number of third-party modules that can be used. These include:</p>
352 <ol>
353 <li><a href="http://sourceforge.net/projects/mod-auth-sspi/" rel="nofollow">mod_auth_sspi</a> for use on Windows platforms.</li>
354 <li><a href="http://adldap.sourceforge.net/wiki/doku.php?id=mod_auth_ntlm_winbind" rel="nofollow">mod_auth_ntlm_winbind</a> for non-Windows platforms. Known to
355 work with httpd 2.0.x on 32-bit platforms. Some users have reported stability
356 issues with both httpd 2.2.x builds and 64-bit Linux builds.</li>
357 </ol>
358 <p>There are three steps to configuring httpd to provide Windows
359 authentication. They are:</p>
360 <ol>
361 <li>Configure httpd as a reverse proxy for Tomcat (see the
362 <a href="http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html">
363 Apache httpd Web Server How-To)</a>.</li>
364 <li>Configure httpd to use Windows authentication</li>
365 <li>Configure Tomcat to use the authentication user information from httpd by
366 setting the tomcatAuthentication attribute on the <a href="config/ajp.html">
367 AJP connector</a> to <code>false</code>.</li>
368 </ol>
369 </blockquote></td></tr></table>
370
371</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions
372 on improving documentation for Apache Tomcat.<br><br>
373 If you have trouble and need help, read
374 <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
375 and ask your question on the tomcat-users
376 <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
377 Do not ask such questions here. This is not a Q&amp;A section.<br><br>
378 The Apache Comments System is explained <a href="./comments.html">here</a>.
379 Comments may be removed by our moderators if they are either
380 implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--
381 var comments_shortname = 'tomcat';
382 var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/windows-auth-howto.html';
383 (function(w, d) {
384 if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
385 d.write('<div id="comments_thread"><\/div>');
386 var s = d.createElement('script');
387 s.type = 'text/javascript';
388 s.async = true;
389 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
390 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
391 }
392 else {
393 d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
394 }
395 })(window, document);
396 //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
397 Copyright &copy; 1999-2017, Apache Software Foundation
398 </em></font></div></td></tr></table></body></html>