blob: 299ba5195e70103bd7acc159404695e8dd1c8282 [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>DatabaseIdentityStoreDefinition</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="DatabaseIdentityStoreDefinition";
}
}
catch(err) {
}
//-->
</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/identitystore/CredentialValidationResult.Status.html" title="enum in javax.security.enterprise.identitystore"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/security/enterprise/identitystore/IdentityStore.html" title="interface in javax.security.enterprise.identitystore"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html" target="_top">Frames</a></li>
<li><a href="DatabaseIdentityStoreDefinition.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>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</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.identitystore</div>
<h2 title="Annotation Type DatabaseIdentityStoreDefinition" class="title">Annotation Type DatabaseIdentityStoreDefinition</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Retention(value=RUNTIME)
@Target(value=TYPE)
public @interface <span class="memberNameLabel">DatabaseIdentityStoreDefinition</span></pre>
<div class="block">Annotation used to define a container-provided <a href="../../../../javax/security/enterprise/identitystore/IdentityStore.html" title="interface in javax.security.enterprise.identitystore"><code>IdentityStore</code></a> that
stores caller credentials and identity attributes in a relational database,
and make that implementation available as an enabled CDI bean.
<p>
The container-provided <code>IdentityStore</code> must support validating <a href="../../../../javax/security/enterprise/credential/UsernamePasswordCredential.html" title="class in javax.security.enterprise.credential"><code>UsernamePasswordCredential</code></a>,
and may support validating other credential types.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.optional.element.summary">
<!-- -->
</a>
<h3>Optional Element Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation">
<caption><span>Optional Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Optional Element and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#callerQuery--">callerQuery</a></span></code>
<div class="block">SQL query to validate the {caller, password} pair.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#dataSourceLookup--">dataSourceLookup</a></span></code>
<div class="block">Full JNDI name of the data source that provides access to the data base
where the caller identities are stored.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#groupsQuery--">groupsQuery</a></span></code>
<div class="block">SQL query to retrieve the groups associated with the caller when
authentication succeeds.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.Class&lt;? extends <a href="../../../../javax/security/enterprise/identitystore/PasswordHash.html" title="interface in javax.security.enterprise.identitystore">PasswordHash</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#hashAlgorithm--">hashAlgorithm</a></span></code>
<div class="block">A <a href="../../../../javax/security/enterprise/identitystore/PasswordHash.html" title="interface in javax.security.enterprise.identitystore"><code>PasswordHash</code></a> implementation used to verify plaintext passwords
by generating a hash of the password and comparing it against the hashed
value returned from the database via the <a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#callerQuery--"><code>callerQuery()</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#hashAlgorithmParameters--">hashAlgorithmParameters</a></span></code>
<div class="block">Used to specify algorithm-specific parameters.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#priority--">priority</a></span></code>
<div class="block">Determines the order in case multiple IdentityStores are found.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#priorityExpression--">priorityExpression</a></span></code>
<div class="block">Allow priority to be specified as an EL expression.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/security/enterprise/identitystore/IdentityStore.ValidationType.html" title="enum in javax.security.enterprise.identitystore">IdentityStore.ValidationType</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useFor--">useFor</a></span></code>
<div class="block">Determines what the identity store is used for</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useForExpression--">useForExpression</a></span></code>
<div class="block">Allow useFor to be specified as an EL expression.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.element.detail">
<!-- -->
</a>
<h3>Element Detail</h3>
<a name="dataSourceLookup--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dataSourceLookup</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;dataSourceLookup</pre>
<div class="block">Full JNDI name of the data source that provides access to the data base
where the caller identities are stored.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Full JNDI name of the data source</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>"java:comp/DefaultDataSource"</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="callerQuery--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>callerQuery</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;callerQuery</pre>
<div class="block">SQL query to validate the {caller, password} pair.
Only needed when <a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useFor--"><code>useFor()</code></a> contains
<a href="../../../../javax/security/enterprise/identitystore/IdentityStore.ValidationType.html#VALIDATE"><code>IdentityStore.ValidationType.VALIDATE</code></a>.
<p>
The name of the caller that is to be authenticated has to be set as the
one and only placeholder. The (hashed) password should be in the first
column of the result.
<p>
Example query:
<pre>
<code>
select password from callers where name = ?
</code>
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SQL query to validate</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="groupsQuery--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>groupsQuery</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;groupsQuery</pre>
<div class="block">SQL query to retrieve the groups associated with the caller when
authentication succeeds.
Only needed when <a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useFor--"><code>useFor()</code></a> contains
<a href="../../../../javax/security/enterprise/identitystore/IdentityStore.ValidationType.html#PROVIDE_GROUPS"><code>IdentityStore.ValidationType.PROVIDE_GROUPS</code></a>.
<p>
The name of the caller that has been authenticated has to be set as the
one and only placeholder. The group name should be in the first column of
the result.
<p>
Example query:
<pre>
<code>
select group_name from caller_groups where caller_name = ?
</code>
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SQL query to retrieve the groups</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="hashAlgorithm--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashAlgorithm</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;? extends <a href="../../../../javax/security/enterprise/identitystore/PasswordHash.html" title="interface in javax.security.enterprise.identitystore">PasswordHash</a>&gt;&nbsp;hashAlgorithm</pre>
<div class="block">A <a href="../../../../javax/security/enterprise/identitystore/PasswordHash.html" title="interface in javax.security.enterprise.identitystore"><code>PasswordHash</code></a> implementation used to verify plaintext passwords
by generating a hash of the password and comparing it against the hashed
value returned from the database via the <a href="../../../../javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#callerQuery--"><code>callerQuery()</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The password hash used to verify plaintext passwords.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>javax.security.enterprise.identitystore.Pbkdf2PasswordHash.class</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="hashAlgorithmParameters--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashAlgorithmParameters</h4>
<pre>public abstract&nbsp;java.lang.String[]&nbsp;hashAlgorithmParameters</pre>
<div class="block">Used to specify algorithm-specific parameters.
<p>
Parameters are specified as a list of name/value pairs, using the format below:
<blockquote><pre>
<i>parameterName=parameterValue</i>
</pre></blockquote>
<p>
For example:
<blockquote><pre>
<i>Algorithm.param1="value"</i>
<i>Algorithm.param2=32</i>
</pre></blockquote>
<p>
This attribute supports immediate EL expressions (${} syntax) for both the
<code>parameterValue</code> as well as for a full array element. If an EL
expression is used for a full array element, the expression must evaluate
to either a single string, a string array or a string <code>Stream</code> where
in each case every string must adhere to the above specified format.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The algorithm parameters.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>{}</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="priority--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>priority</h4>
<pre>public abstract&nbsp;int&nbsp;priority</pre>
<div class="block">Determines the order in case multiple IdentityStores are found.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the priority.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>70</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="priorityExpression--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>priorityExpression</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;priorityExpression</pre>
<div class="block">Allow priority to be specified as an EL expression.
If set, overrides any value set with priority.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the priority EL expression</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="useFor--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useFor</h4>
<pre>public abstract&nbsp;<a href="../../../../javax/security/enterprise/identitystore/IdentityStore.ValidationType.html" title="enum in javax.security.enterprise.identitystore">IdentityStore.ValidationType</a>[]&nbsp;useFor</pre>
<div class="block">Determines what the identity store is used for</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the type the identity store is used for</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>{javax.security.enterprise.identitystore.IdentityStore.ValidationType.VALIDATE, javax.security.enterprise.identitystore.IdentityStore.ValidationType.PROVIDE_GROUPS}</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="useForExpression--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>useForExpression</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;useForExpression</pre>
<div class="block">Allow useFor to be specified as an EL expression.
If set, overrides any value set with useFor.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the useFor EL expression</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</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/identitystore/CredentialValidationResult.Status.html" title="enum in javax.security.enterprise.identitystore"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/security/enterprise/identitystore/IdentityStore.html" title="interface in javax.security.enterprise.identitystore"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html" target="_top">Frames</a></li>
<li><a href="DatabaseIdentityStoreDefinition.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>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>