<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>AuthenticationStatus</title>
<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="AuthenticationStatus";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":9,"i1":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static 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="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><a href="../../../jakarta/security/enterprise/AuthenticationException.html" title="class in jakarta.security.enterprise"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/security/enterprise/CallerPrincipal.html" title="class in jakarta.security.enterprise"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/security/enterprise/AuthenticationStatus.html" target="_top">Frames</a></li>
<li><a href="AuthenticationStatus.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="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&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">jakarta.security.enterprise</div>
<h2 title="Enum AuthenticationStatus" class="title">Enum AuthenticationStatus</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Enum&lt;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a>&gt;</li>
<li>
<ul class="inheritance">
<li>jakarta.security.enterprise.AuthenticationStatus</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable, java.lang.Comparable&lt;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public enum <span class="typeNameLabel">AuthenticationStatus</span>
extends java.lang.Enum&lt;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a>&gt;</pre>
<div class="block">The AuthenticationStatus is used as a return value by primarily
 the <a href="../../../jakarta/security/enterprise/authentication/mechanism/http/HttpAuthenticationMechanism.html" title="interface in jakarta.security.enterprise.authentication.mechanism.http"><code>HttpAuthenticationMechanism</code></a> to indicate the result (status)
 of the authentication process.
 
 <p>
 For the result from <a href="../../../jakarta/security/enterprise/authentication/mechanism/http/HttpAuthenticationMechanism.html#validateRequest-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-jakarta.security.enterprise.authentication.mechanism.http.HttpMessageContext-"><code>HttpAuthenticationMechanism.validateRequest(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.security.enterprise.authentication.mechanism.http.HttpMessageContext)</code></a> 
 an AuthenticationStatus must be transformed by the Jakarta EE server into the corresponding Jakarta Authentication <code>AuthStatus</code>
 according to the following rules:
 
 <ul>
   <li> AuthenticationStatus.NOT_DONE to AuthStatus.SUCCESS </li>
   <li> AuthenticationStatus.SEND_CONTINUE to AuthStatus.SEND_CONTINUE </li>
   <li> AuthenticationStatus.SUCCESS to AuthStatus.SUCCESS </li>
   <li> AuthenticationStatus.SEND_FAILURE to AuthStatus.SEND_FAILURE </li>
 </ul>
 
 <p>
 After the transformation as outlined above the transformed result has to be processed by the Jakarta EE server as 
 specified by the Servlet Container Profile of the Jakarta Authentication spec.
 
 <p>
 <b>Implementation note:</b> while the Jakarta Authentication Servlet Container Profile is the authoritative
 source on how to process the <code>AuthStatus.SUCCESS</code> result and this specification puts no constraints 
 of any kind on that, the expectation is that Jakarta EE servers in practice will mainly look at the 
 result being <code>AuthStatus.SUCCESS</code> or not <code>AuthStatus.SUCCESS</code>. Simply said, if the result is 
 <code>AuthStatus.SUCCESS</code> the authenticated identity (if any) must be set (established) for the current HTTP request, 
 otherwise not.
 
 <p>
 The return value of <a href="../../../jakarta/security/enterprise/SecurityContext.html#authenticate-jakarta.servlet.http.HttpServletRequest-jakarta.servlet.http.HttpServletResponse-jakarta.security.enterprise.authentication.mechanism.http.AuthenticationParameters-"><code>SecurityContext.authenticate(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.security.enterprise.authentication.mechanism.http.AuthenticationParameters)</code></a>
 , which is also of type AuthenticationStatus, strongly relates to the outcome of the <code>HttpAuthenticationMechanism#validateRequest</code>
 method as described above, but must be transformed by the Jakarta EE server from the corresponding outcome of the
 <a href="../../../jakarta/servlet/http/HttpServletRequest.html#authenticate-jakarta.servlet.http.HttpServletResponse-"><code>HttpServletRequest.authenticate(jakarta.servlet.http.HttpServletResponse)</code></a> call as follows:
 
 <ul>
   <li> <code>true</code> to <code>AuthenticationStatus.SUCCESS</code> </li>
   <li> <code>false</code> to <code>[last status]</code> (see below) </li>
   <li> <code>ServletException</code> or <code>IOException</code> to <code>AuthenticationStatus.SEND_FAILURE</code> </li>
 </ul>
 
 <p>
 When an <code>HttpAuthenticationMechanism</code> was used <code>[last status]</code> must be
 the value returned by <code>HttpAuthenticationMechanism#validateRequest</code>.
 
 <p>
 When a Jakarta Authentication ServerAuthModule (SAM) was used and an <code>HttpAuthenticationMechanism</code> 
 was <em>not</em> used Jakarta EE servers are encouraged, but not required, to set <code>[last status]</code> 
 to the value returned by <code>ServerAuthModule#validateRequest</code> transformed as follows:
 
 <ul>
   <li> AuthStatus.SEND_CONTINUE to AuthenticationStatus.SEND_CONTINUE </li>
   <li> AuthStatus.SUCCESS to AuthenticationStatus.SUCCESS </li>
   <li> AuthStatus.SEND_FAILURE to AuthenticationStatus.SEND_FAILURE </li>
   <li> (all other outcomes) to AuthenticationStatus.NOT_DONE </li>
 </ul>
 
 <p>
 When a Jakarta EE Server proprietary identity store equivalent was used and an 
 <code>HttpAuthenticationMechanism</code> was <em>not</em> used 
 Jakarta EE servers are encouraged, but not required, to set <code>[last status]</code> to a value
 that logically corresponds to the description of each enum constant of AuthenticationStatus. This outcome
 should never be depended on by application code as being portable.
 
 <p>
 Application code calling <code>SecurityContext#authenticate</code> is expected to act on all possible
 values of AuthenticationStatus.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="enum.constant.summary">
<!--   -->
</a>
<h3>Enum Constant Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Constant Summary table, listing enum constants, and an explanation">
<caption><span>Enum Constants</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Enum Constant and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../jakarta/security/enterprise/AuthenticationStatus.html#NOT_DONE">NOT_DONE</a></span></code>
<div class="block">The authentication mechanism was called, but decided not to authenticate.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../jakarta/security/enterprise/AuthenticationStatus.html#SEND_CONTINUE">SEND_CONTINUE</a></span></code>
<div class="block">The authentication mechanism was called and a multi-step authentication dialog with the caller
 has been started (for instance, the caller has been redirected to a login page).</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../jakarta/security/enterprise/AuthenticationStatus.html#SEND_FAILURE">SEND_FAILURE</a></span></code>
<div class="block">The authentication mechanism was called but the caller was <em>not</em> successfully authenticated and
 therefore the caller principal will not be made available.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../jakarta/security/enterprise/AuthenticationStatus.html#SUCCESS">SUCCESS</a></span></code>
<div class="block">The authentication mechanism was called and the caller was successfully authenticated.</div>
</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static 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>static <a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/security/enterprise/AuthenticationStatus.html#valueOf-java.lang.String-">valueOf</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the enum constant of this type with the specified name.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/security/enterprise/AuthenticationStatus.html#values--">values</a></span>()</code>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Enum</h3>
<code>clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf</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.Object</h3>
<code>getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="enum.constant.detail">
<!--   -->
</a>
<h3>Enum Constant Detail</h3>
<a name="NOT_DONE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NOT_DONE</h4>
<pre>public static final&nbsp;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a> NOT_DONE</pre>
<div class="block">The authentication mechanism was called, but decided not to authenticate.
 This status would be typically returned in pre-emptive security; the authentication
 mechanism is called, but authentication is optional and would only take place when for
 instance a specific request header is present.</div>
</li>
</ul>
<a name="SEND_CONTINUE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SEND_CONTINUE</h4>
<pre>public static final&nbsp;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a> SEND_CONTINUE</pre>
<div class="block">The authentication mechanism was called and a multi-step authentication dialog with the caller
 has been started (for instance, the caller has been redirected to a login page). Simply said 
 authentication is "in progress". Calling application code (if any) should not write to the response
 when this status is received.</div>
</li>
</ul>
<a name="SUCCESS">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SUCCESS</h4>
<pre>public static final&nbsp;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a> SUCCESS</pre>
<div class="block">The authentication mechanism was called and the caller was successfully authenticated. After the
 Jakarta EE server has processed this outcome, the caller principal is available.</div>
</li>
</ul>
<a name="SEND_FAILURE">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SEND_FAILURE</h4>
<pre>public static final&nbsp;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a> SEND_FAILURE</pre>
<div class="block">The authentication mechanism was called but the caller was <em>not</em> successfully authenticated and
 therefore the caller principal will not be made available.
 <p>
 Note that this status should be used to indicate a logical problem (such as a credential not matching or a caller
 ID that can not be found). Exceptions should be used for system level problems (such as a database connection timing out).</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="values--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>values</h4>
<pre>public static&nbsp;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a>[]&nbsp;values()</pre>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.  This method may be used to iterate
over the constants as follows:
<pre>
for (AuthenticationStatus c : AuthenticationStatus.values())
&nbsp;   System.out.println(c);
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an array containing the constants of this enum type, in the order they are declared</dd>
</dl>
</li>
</ul>
<a name="valueOf-java.lang.String-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>valueOf</h4>
<pre>public static&nbsp;<a href="../../../jakarta/security/enterprise/AuthenticationStatus.html" title="enum in jakarta.security.enterprise">AuthenticationStatus</a>&nbsp;valueOf(java.lang.String&nbsp;name)</pre>
<div class="block">Returns the enum constant of this type with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this type.  (Extraneous whitespace characters are 
not permitted.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the enum constant with the specified name</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if this enum type has no constant with the specified name</dd>
<dd><code>java.lang.NullPointerException</code> - if the argument is null</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="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><a href="../../../jakarta/security/enterprise/AuthenticationException.html" title="class in jakarta.security.enterprise"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/security/enterprise/CallerPrincipal.html" title="class in jakarta.security.enterprise"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/security/enterprise/AuthenticationStatus.html" target="_top">Frames</a></li>
<li><a href="AuthenticationStatus.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="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
