<!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>

<link rel="shortcut icon" href="/img/jakarta-favicon.ico">
</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="../../../javax/security/enterprise/AuthenticationException.html" title="class in javax.security.enterprise"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/security/enterprise/CallerPrincipal.html" title="class in javax.security.enterprise"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/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">javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.security.enterprise">AuthenticationStatus</a>&gt;</li>
<li>
<ul class="inheritance">
<li>javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.security.enterprise">AuthenticationStatus</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public enum <span class="typeNameLabel">AuthenticationStatus</span>
extends java.lang.Enum&lt;<a href="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.security.enterprise">AuthenticationStatus</a>&gt;</pre>
<div class="block">The AuthenticationStatus is used as a return value by primarily
 the <a href="../../../javax/security/enterprise/authentication/mechanism/http/HttpAuthenticationMechanism.html" title="interface in javax.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="../../../javax/security/enterprise/authentication/mechanism/http/HttpAuthenticationMechanism.html#validateRequest-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-javax.security.enterprise.authentication.mechanism.http.HttpMessageContext-"><code>HttpAuthenticationMechanism.validateRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.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="../../../javax/security/enterprise/SecurityContext.html#authenticate-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-javax.security.enterprise.authentication.mechanism.http.AuthenticationParameters-"><code>SecurityContext.authenticate(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.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="../../../javax/servlet/http/HttpServletRequest.html#authenticate-javax.servlet.http.HttpServletResponse-"><code>HttpServletRequest.authenticate(javax.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="../../../javax/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="../../../javax/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="../../../javax/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="../../../javax/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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.security.enterprise">AuthenticationStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.security.enterprise">AuthenticationStatus</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.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="../../../javax/security/enterprise/AuthenticationStatus.html" title="enum in javax.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="../../../javax/security/enterprise/AuthenticationException.html" title="class in javax.security.enterprise"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/security/enterprise/CallerPrincipal.html" title="class in javax.security.enterprise"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/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>
