blob: 4334e74fe591e444f9742e5275d47a9aaa1539d5 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_292) on Tue Jun 15 06:01:17 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AltKerberosAuthenticationHandler (Apache Hadoop Auth 3.3.1 API)</title>
<meta name="date" content="2021-06-15">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AltKerberosAuthenticationHandler (Apache Hadoop Auth 3.3.1 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":10,"i2":10,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AltKerberosAuthenticationHandler.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationFilter.html" title="class in org.apache.hadoop.security.authentication.server"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html" target="_top">Frames</a></li>
<li><a href="AltKerberosAuthenticationHandler.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.security.authentication.server</div>
<h2 title="Class AltKerberosAuthenticationHandler" class="title">Class AltKerberosAuthenticationHandler</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.security.authentication.server.AltKerberosAuthenticationHandler</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html" title="interface in org.apache.hadoop.security.authentication.server">AuthenticationHandler</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/apache/hadoop/security/authentication/server/JWTRedirectAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">JWTRedirectAuthenticationHandler</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">AltKerberosAuthenticationHandler</span>
extends <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">KerberosAuthenticationHandler</a></pre>
<div class="block">The <a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server"><code>AltKerberosAuthenticationHandler</code></a> behaves exactly the same way as
the <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server"><code>KerberosAuthenticationHandler</code></a>, except that it allows for an
alternative form of authentication for browsers while still using Kerberos
for Java access. This is an abstract class that should be subclassed
to allow a developer to implement their own custom authentication for browser
access. The alternateAuthenticate method will be called whenever a request
comes from a browser.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#NON_BROWSER_USER_AGENTS">NON_BROWSER_USER_AGENTS</a></span></code>
<div class="block">Constant for the configuration property that indicates which user agents
are not considered browsers (comma separated)</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#TYPE">TYPE</a></span></code>
<div class="block">Constant that identifies the authentication mechanism.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.hadoop.security.authentication.server.<a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">KerberosAuthenticationHandler</a></h3>
<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#KEYTAB">KEYTAB</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#LOG">LOG</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#NAME_RULES">NAME_RULES</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#PRINCIPAL">PRINCIPAL</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#RULE_MECHANISM">RULE_MECHANISM</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.security.authentication.server.AuthenticationHandler">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.hadoop.security.authentication.server.<a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html" title="interface in org.apache.hadoop.security.authentication.server">AuthenticationHandler</a></h3>
<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html#WWW_AUTHENTICATE">WWW_AUTHENTICATE</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#AltKerberosAuthenticationHandler--">AltKerberosAuthenticationHandler</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationToken.html" title="class in org.apache.hadoop.security.authentication.server">AuthenticationToken</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#alternateAuthenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">alternateAuthenticate</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">Subclasses should implement this method to provide the custom
authentication to be used for browsers.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationToken.html" title="class in org.apache.hadoop.security.authentication.server">AuthenticationToken</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#authenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">authenticate</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">It enforces the the Kerberos SPNEGO authentication sequence returning an
<a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationToken.html" title="class in org.apache.hadoop.security.authentication.server"><code>AuthenticationToken</code></a> only after the Kerberos SPNEGO sequence has
completed successfully (in the case of Java access) and only after the
custom authentication implemented by the subclass in alternateAuthenticate
has completed successfully (in the case of browser access).</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#getType--">getType</a></span>()</code>
<div class="block">Returns the authentication type of the authentication handler,
'alt-kerberos'.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#init-java.util.Properties-">init</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;config)</code>
<div class="block">Initializes the authentication handler instance.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html#isBrowser-java.lang.String-">isBrowser</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userAgent)</code>
<div class="block">This method parses the User-Agent String and returns whether or not it
refers to a browser.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.hadoop.security.authentication.server.<a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">KerberosAuthenticationHandler</a></h3>
<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#destroy--">destroy</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#getKeytab--">getKeytab</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#getPrincipals--">getPrincipals</a>, <a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#managementOperation-org.apache.hadoop.security.authentication.server.AuthenticationToken-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">managementOperation</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="TYPE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TYPE</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> TYPE</pre>
<div class="block">Constant that identifies the authentication mechanism.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.security.authentication.server.AltKerberosAuthenticationHandler.TYPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="NON_BROWSER_USER_AGENTS">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>NON_BROWSER_USER_AGENTS</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> NON_BROWSER_USER_AGENTS</pre>
<div class="block">Constant for the configuration property that indicates which user agents
are not considered browsers (comma separated)</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.security.authentication.server.AltKerberosAuthenticationHandler.NON_BROWSER_USER_AGENTS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AltKerberosAuthenticationHandler--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AltKerberosAuthenticationHandler</h4>
<pre>public&nbsp;AltKerberosAuthenticationHandler()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getType</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getType()</pre>
<div class="block">Returns the authentication type of the authentication handler,
'alt-kerberos'.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html#getType--">getType</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html" title="interface in org.apache.hadoop.security.authentication.server">AuthenticationHandler</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#getType--">getType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">KerberosAuthenticationHandler</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the authentication type of the authentication handler,
'alt-kerberos'.</dd>
</dl>
</li>
</ul>
<a name="init-java.util.Properties-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre>public&nbsp;void&nbsp;init(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;config)
throws javax.servlet.ServletException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#init-java.util.Properties-">KerberosAuthenticationHandler</a></code></span></div>
<div class="block">Initializes the authentication handler instance.
<p>
It creates a Kerberos context using the principal and keytab specified in
the configuration.
<p>
This method is invoked by the <a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationFilter.html#init-javax.servlet.FilterConfig-"><code>AuthenticationFilter.init(javax.servlet.FilterConfig)</code></a> method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html#init-java.util.Properties-">init</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html" title="interface in org.apache.hadoop.security.authentication.server">AuthenticationHandler</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#init-java.util.Properties-">init</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">KerberosAuthenticationHandler</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - configuration properties to initialize the handler.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code> - thrown if the handler could not be initialized.</dd>
</dl>
</li>
</ul>
<a name="authenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>authenticate</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationToken.html" title="class in org.apache.hadoop.security.authentication.server">AuthenticationToken</a>&nbsp;authenticate(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="../../../../../../org/apache/hadoop/security/authentication/client/AuthenticationException.html" title="class in org.apache.hadoop.security.authentication.client">AuthenticationException</a></pre>
<div class="block">It enforces the the Kerberos SPNEGO authentication sequence returning an
<a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationToken.html" title="class in org.apache.hadoop.security.authentication.server"><code>AuthenticationToken</code></a> only after the Kerberos SPNEGO sequence has
completed successfully (in the case of Java access) and only after the
custom authentication implemented by the subclass in alternateAuthenticate
has completed successfully (in the case of browser access).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html#authenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">authenticate</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationHandler.html" title="interface in org.apache.hadoop.security.authentication.server">AuthenticationHandler</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html#authenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">authenticate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.html" title="class in org.apache.hadoop.security.authentication.server">KerberosAuthenticationHandler</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the HTTP client request.</dd>
<dd><code>response</code> - the HTTP client response.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an authentication token if the request is authorized or null</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - thrown if an IO error occurred</dd>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/client/AuthenticationException.html" title="class in org.apache.hadoop.security.authentication.client">AuthenticationException</a></code> - thrown if an authentication error occurred</dd>
</dl>
</li>
</ul>
<a name="isBrowser-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBrowser</h4>
<pre>protected&nbsp;boolean&nbsp;isBrowser(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userAgent)</pre>
<div class="block">This method parses the User-Agent String and returns whether or not it
refers to a browser. If its not a browser, then Kerberos authentication
will be used; if it is a browser, alternateAuthenticate from the subclass
will be used.
<p>
A User-Agent String is considered to be a browser if it does not contain
any of the values from alt-kerberos.non-browser.user-agents; the default
behavior is to consider everything a browser unless it contains one of:
"java", "curl", "wget", or "perl". Subclasses can optionally override
this method to use different behavior.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>userAgent</code> - The User-Agent String, or null if there isn't one</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the User-Agent String refers to a browser, false if not</dd>
</dl>
</li>
</ul>
<a name="alternateAuthenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>alternateAuthenticate</h4>
<pre>public abstract&nbsp;<a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationToken.html" title="class in org.apache.hadoop.security.authentication.server">AuthenticationToken</a>&nbsp;alternateAuthenticate(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="../../../../../../org/apache/hadoop/security/authentication/client/AuthenticationException.html" title="class in org.apache.hadoop.security.authentication.client">AuthenticationException</a></pre>
<div class="block">Subclasses should implement this method to provide the custom
authentication to be used for browsers.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the HTTP client request.</dd>
<dd><code>response</code> - the HTTP client response.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an authentication token if the request is authorized, or null</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - thrown if an IO error occurs</dd>
<dd><code><a href="../../../../../../org/apache/hadoop/security/authentication/client/AuthenticationException.html" title="class in org.apache.hadoop.security.authentication.client">AuthenticationException</a></code> - thrown if an authentication error occurs</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AltKerberosAuthenticationHandler.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/hadoop/security/authentication/server/AuthenticationFilter.html" title="class in org.apache.hadoop.security.authentication.server"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/security/authentication/server/AltKerberosAuthenticationHandler.html" target="_top">Frames</a></li>
<li><a href="AltKerberosAuthenticationHandler.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2008&#x2013;2021 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>