| <!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> |
| |
| <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="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="../../../../jakarta/security/enterprise/identitystore/CredentialValidationResult.Status.html" title="enum in jakarta.security.enterprise.identitystore"><span class="typeNameLink">Prev Class</span></a></li> |
| <li><a href="../../../../jakarta/security/enterprise/identitystore/IdentityStore.html" title="interface in jakarta.security.enterprise.identitystore"><span class="typeNameLink">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../index.html?jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html" target="_top">Frames</a></li> |
| <li><a href="DatabaseIdentityStoreDefinition.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../allclasses-noframe.html">All 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: </li> |
| <li>Field | </li> |
| <li>Required | </li> |
| <li><a href="#annotation.type.optional.element.summary">Optional</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li>Field | </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">jakarta.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="../../../../jakarta/security/enterprise/identitystore/IdentityStore.html" title="interface in jakarta.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="../../../../jakarta/security/enterprise/credential/UsernamePasswordCredential.html" title="class in jakarta.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"> </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="../../../../jakarta/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="../../../../jakarta/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="../../../../jakarta/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<? extends <a href="../../../../jakarta/security/enterprise/identitystore/PasswordHash.html" title="interface in jakarta.security.enterprise.identitystore">PasswordHash</a>></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#hashAlgorithm--">hashAlgorithm</a></span></code> |
| <div class="block">A <a href="../../../../jakarta/security/enterprise/identitystore/PasswordHash.html" title="interface in jakarta.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="../../../../jakarta/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="../../../../jakarta/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="../../../../jakarta/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="../../../../jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#priorityExpression--">priorityExpression</a></span></code> |
| <div class="block">Allow <code>priority</code> to be specified as a Jakarta Expression Language expression.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code><a href="../../../../jakarta/security/enterprise/identitystore/IdentityStore.ValidationType.html" title="enum in jakarta.security.enterprise.identitystore">IdentityStore.ValidationType</a>[]</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/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="../../../../jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useForExpression--">useForExpression</a></span></code> |
| <div class="block">Allow <code>useFor</code> to be specified as an Jakarta Expression Language 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 java.lang.String 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 java.lang.String callerQuery</pre> |
| <div class="block">SQL query to validate the {caller, password} pair. |
| |
| Only needed when <a href="../../../../jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useFor--"><code>useFor()</code></a> contains |
| <a href="../../../../jakarta/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 java.lang.String groupsQuery</pre> |
| <div class="block">SQL query to retrieve the groups associated with the caller when |
| authentication succeeds. |
| |
| Only needed when <a href="../../../../jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html#useFor--"><code>useFor()</code></a> contains |
| <a href="../../../../jakarta/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 java.lang.Class<? extends <a href="../../../../jakarta/security/enterprise/identitystore/PasswordHash.html" title="interface in jakarta.security.enterprise.identitystore">PasswordHash</a>> hashAlgorithm</pre> |
| <div class="block">A <a href="../../../../jakarta/security/enterprise/identitystore/PasswordHash.html" title="interface in jakarta.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="../../../../jakarta/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>jakarta.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 java.lang.String[] 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 Jakarta Expression Language 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 int 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 java.lang.String priorityExpression</pre> |
| <div class="block">Allow <code>priority</code> to be specified as a Jakarta Expression Language expression. |
| If set, overrides any value set with <code>priority</code>.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>the <code>priority</code> Jakarta Expression Language 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 <a href="../../../../jakarta/security/enterprise/identitystore/IdentityStore.ValidationType.html" title="enum in jakarta.security.enterprise.identitystore">IdentityStore.ValidationType</a>[] 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>{jakarta.security.enterprise.identitystore.IdentityStore.ValidationType.VALIDATE, jakarta.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 java.lang.String useForExpression</pre> |
| <div class="block">Allow <code>useFor</code> to be specified as an Jakarta Expression Language expression. |
| If set, overrides any value set with useFor.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>the <code>useFor</code> Jakarta Expression Language 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="../../../../jakarta/security/enterprise/identitystore/CredentialValidationResult.Status.html" title="enum in jakarta.security.enterprise.identitystore"><span class="typeNameLink">Prev Class</span></a></li> |
| <li><a href="../../../../jakarta/security/enterprise/identitystore/IdentityStore.html" title="interface in jakarta.security.enterprise.identitystore"><span class="typeNameLink">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../index.html?jakarta/security/enterprise/identitystore/DatabaseIdentityStoreDefinition.html" target="_top">Frames</a></li> |
| <li><a href="DatabaseIdentityStoreDefinition.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../allclasses-noframe.html">All 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: </li> |
| <li>Field | </li> |
| <li>Required | </li> |
| <li><a href="#annotation.type.optional.element.summary">Optional</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li>Field | </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> |