blob: 9acf23939432a3f0b96c442afea1c7a9c4a1f15c [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>
<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="../../../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 Java EE server into the corresponding JASPIC (JSR 196) AuthStatus
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 Java EE server as
specified by the Servlet Container Profile of the JASPIC 1.1 spec (chapter 3).
<p>
<b>Implementation note:</b> while the JASPIC 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 Java 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 Java 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 JASPIC ServerAuthModule (SAM) was used and an <code>HttpAuthenticationMechanism</code> was <em>not</em> used
Java 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 Java EE Server proprietary identity store equivalent was used and an
<code>HttpAuthenticationMechanism</code> was <em>not</em> used
Java 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
therefor 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
Java 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
therefor 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>