<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>JndiLdapContextFactory xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/shiro/realm/ldap/JndiLdapContextFactory.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *     <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.shiro.realm.ldap;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.util.StringUtils;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> javax.naming.AuthenticationException;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> javax.naming.Context;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> javax.naming.NamingException;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> javax.naming.ldap.InitialLdapContext;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> javax.naming.ldap.LdapContext;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Hashtable;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">/**</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * {@link LdapContextFactory} implementation using the default Sun/Oracle JNDI Ldap API, utilizing JNDI</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * environment properties and an {@link javax.naming.InitialContext}.</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * &lt;h2&gt;Configuration&lt;/h2&gt;</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * This class basically wraps a default template JNDI environment properties Map.  This properties map is the base</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * configuration template used to acquire JNDI {@link LdapContext} connections at runtime.  The</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * {@link #getLdapContext(Object, Object)} method implementation merges this default template with other properties</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * accessible at runtime only (for example per-method principals and credentials).  The constructed runtime map is the</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * one used to acquire the {@link LdapContext}.</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * The template can be configured directly via the {@link #getEnvironment()}/{@link #setEnvironment(java.util.Map)}</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * properties directly if necessary, but it is usually more convenient to use the supporting wrapper get/set methods</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * for various environment properties.  These wrapper methods interact with the environment</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * template on your behalf, leaving your configuration cleaner and easier to understand.</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * For example, consider the following two identical configurations:</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * [main]</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * ldapRealm = org.apache.shiro.realm.ldap.DefaultLdapRealm</em>
<a name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.url = ldap://localhost:389</em>
<a name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.authenticationMechanism = DIGEST-MD5</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * and</em>
<a name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * [main]</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * ldapRealm = org.apache.shiro.realm.ldap.DefaultLdapRealm</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.environment[java.naming.provider.url] = ldap://localhost:389</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.environment[java.naming.security.authentication] = DIGEST-MD5</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * As you can see, the 2nd configuration block is a little more difficult to read and also requires knowledge</em>
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * of the underlying JNDI Context property keys.  The first is easier to read and understand.</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * &lt;p/&gt;</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * Note that occasionally it will be necessary to use the latter configuration style to set environment properties</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> * where no corresponding wrapper method exists.  In this case, the hybrid approach is still a little easier to read.</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment"> * For example:</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment"> * [main]</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment"> * ldapRealm = org.apache.shiro.realm.ldap.DefaultLdapRealm</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.url = ldap://localhost:389</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.authenticationMechanism = DIGEST-MD5</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment"> * ldapRealm.contextFactory.environment[some.other.obscure.jndi.key] = some value</em>
<a name="75" href="#75">75</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
<a name="76" href="#76">76</a>  <em class="jxr_javadoccomment"> *</em>
<a name="77" href="#77">77</a>  <em class="jxr_javadoccomment"> * @since 1.1</em>
<a name="78" href="#78">78</a>  <em class="jxr_javadoccomment"> */</em>
<a name="79" href="#79">79</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/shiro/realm/ldap/JndiLdapContextFactory.html">JndiLdapContextFactory</a> implements <a href="../../../../../org/apache/shiro/realm/ldap/LdapContextFactory.html">LdapContextFactory</a> {
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>      <em class="jxr_comment">/*<em class="jxr_comment">-------------------------------------------</em></em>
<a name="82" href="#82">82</a>  <em class="jxr_comment">     |             C O N S T A N T S            |</em>
<a name="83" href="#83">83</a>  <em class="jxr_comment">     ===========================================*/</em>
<a name="84" href="#84">84</a>      <em class="jxr_javadoccomment">/**</em>
<a name="85" href="#85">85</a>  <em class="jxr_javadoccomment">     * The Sun LDAP property used to enable connection pooling.  This is used in the default implementation</em>
<a name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     * to enable LDAP connection pooling.</em>
<a name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     */</em>
<a name="88" href="#88">88</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String SUN_CONNECTION_POOLING_PROPERTY = <span class="jxr_string">"com.sun.jndi.ldap.connect.pool"</span>;
<a name="89" href="#89">89</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_CONTEXT_FACTORY_CLASS_NAME = <span class="jxr_string">"com.sun.jndi.ldap.LdapCtxFactory"</span>;
<a name="90" href="#90">90</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String SIMPLE_AUTHENTICATION_MECHANISM_NAME = <span class="jxr_string">"simple"</span>;
<a name="91" href="#91">91</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_REFERRAL = <span class="jxr_string">"follow"</span>;
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger log = LoggerFactory.getLogger(JndiLdapContextFactory.<strong class="jxr_keyword">class</strong>);
<a name="94" href="#94">94</a>  
<a name="95" href="#95">95</a>      <em class="jxr_comment">/*<em class="jxr_comment">-------------------------------------------</em></em>
<a name="96" href="#96">96</a>  <em class="jxr_comment">     |    I N S T A N C E   V A R I A B L E S   |</em>
<a name="97" href="#97">97</a>  <em class="jxr_comment">     ============================================*/</em>
<a name="98" href="#98">98</a>      <strong class="jxr_keyword">private</strong> Map&lt;String, Object&gt; environment;
<a name="99" href="#99">99</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> poolingEnabled;
<a name="100" href="#100">100</a>     <strong class="jxr_keyword">private</strong> String systemPassword;
<a name="101" href="#101">101</a>     <strong class="jxr_keyword">private</strong> String systemUsername;
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <em class="jxr_comment">/*<em class="jxr_comment">-------------------------------------------</em></em>
<a name="104" href="#104">104</a> <em class="jxr_comment">     |         C O N S T R U C T O R S          |</em>
<a name="105" href="#105">105</a> <em class="jxr_comment">     ===========================================*/</em>
<a name="106" href="#106">106</a> 
<a name="107" href="#107">107</a>     <em class="jxr_javadoccomment">/**</em>
<a name="108" href="#108">108</a> <em class="jxr_javadoccomment">     * Default no-argument constructor that initializes the backing {@link #getEnvironment() environment template} with</em>
<a name="109" href="#109">109</a> <em class="jxr_javadoccomment">     * the {@link #setContextFactoryClassName(String) contextFactoryClassName} equal to</em>
<a name="110" href="#110">110</a> <em class="jxr_javadoccomment">     * {@code com.sun.jndi.ldap.LdapCtxFactory} (the Sun/Oracle default) and the default</em>
<a name="111" href="#111">111</a> <em class="jxr_javadoccomment">     * {@link #setReferral(String) referral} behavior to {@code follow}.</em>
<a name="112" href="#112">112</a> <em class="jxr_javadoccomment">     */</em>
<a name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/realm/ldap/JndiLdapContextFactory.html">JndiLdapContextFactory</a>() {
<a name="114" href="#114">114</a>         <strong class="jxr_keyword">this</strong>.environment = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
<a name="115" href="#115">115</a>         setContextFactoryClassName(DEFAULT_CONTEXT_FACTORY_CLASS_NAME);
<a name="116" href="#116">116</a>         setReferral(DEFAULT_REFERRAL);
<a name="117" href="#117">117</a>         poolingEnabled = <strong class="jxr_keyword">true</strong>;
<a name="118" href="#118">118</a>     }
<a name="119" href="#119">119</a> 
<a name="120" href="#120">120</a>     <em class="jxr_comment">/*<em class="jxr_comment">-------------------------------------------</em></em>
<a name="121" href="#121">121</a> <em class="jxr_comment">     |  A C C E S S O R S / M O D I F I E R S   |</em>
<a name="122" href="#122">122</a> <em class="jxr_comment">     ===========================================*/</em>
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>     <em class="jxr_javadoccomment">/**</em>
<a name="125" href="#125">125</a> <em class="jxr_javadoccomment">     * Sets the type of LDAP authentication mechanism to use when connecting to the LDAP server.</em>
<a name="126" href="#126">126</a> <em class="jxr_javadoccomment">     * This is a wrapper method for setting the JNDI {@link #getEnvironment() environment template}'s</em>
<a name="127" href="#127">127</a> <em class="jxr_javadoccomment">     * {@link Context#SECURITY_AUTHENTICATION} property.</em>
<a name="128" href="#128">128</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="129" href="#129">129</a> <em class="jxr_javadoccomment">     * "none" (i.e. anonymous) and "simple" authentications are supported automatically and don't need to be configured</em>
<a name="130" href="#130">130</a> <em class="jxr_javadoccomment">     * via this property.  However, if you require a different mechanism, such as a SASL or External mechanism, you</em>
<a name="131" href="#131">131</a> <em class="jxr_javadoccomment">     * must configure that explicitly via this property.  See the</em>
<a name="132" href="#132">132</a> <em class="jxr_javadoccomment">     * &lt;a href="<a href="http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html" target="alexandria_uri">http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html</a>"&gt;JNDI LDAP</em>
<a name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * Authentication Mechanisms&lt;/a&gt; for more information.</em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     *</em>
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">     * @param authenticationMechanism the type of LDAP authentication to perform.</em>
<a name="136" href="#136">136</a> <em class="jxr_javadoccomment">     * @see &lt;a href="<a href="http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html" target="alexandria_uri">http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html</a>"&gt;</em>
<a name="137" href="#137">137</a> <em class="jxr_javadoccomment">     *      <a href="http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html&lt;/a&gt;" target="alexandria_uri">http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html&lt;/a&gt;</a></em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">     */</em>
<a name="139" href="#139">139</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAuthenticationMechanism(String authenticationMechanism) {
<a name="140" href="#140">140</a>         setEnvironmentProperty(Context.SECURITY_AUTHENTICATION, authenticationMechanism);
<a name="141" href="#141">141</a>     }
<a name="142" href="#142">142</a> 
<a name="143" href="#143">143</a>     <em class="jxr_javadoccomment">/**</em>
<a name="144" href="#144">144</a> <em class="jxr_javadoccomment">     * Returns the type of LDAP authentication mechanism to use when connecting to the LDAP server.</em>
<a name="145" href="#145">145</a> <em class="jxr_javadoccomment">     * This is a wrapper method for getting the JNDI {@link #getEnvironment() environment template}'s</em>
<a name="146" href="#146">146</a> <em class="jxr_javadoccomment">     * {@link Context#SECURITY_AUTHENTICATION} property.</em>
<a name="147" href="#147">147</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="148" href="#148">148</a> <em class="jxr_javadoccomment">     * If this property remains un-configured (i.e. {@code null} indicating the</em>
<a name="149" href="#149">149</a> <em class="jxr_javadoccomment">     * {@link #setAuthenticationMechanism(String)} method wasn't used), this indicates that the default JNDI</em>
<a name="150" href="#150">150</a> <em class="jxr_javadoccomment">     * "none" (anonymous) and "simple" authentications are supported automatically.  Any non-null value returned</em>
<a name="151" href="#151">151</a> <em class="jxr_javadoccomment">     * represents an explicitly configured mechanism (e.g. a SASL or external mechanism). See the</em>
<a name="152" href="#152">152</a> <em class="jxr_javadoccomment">     * &lt;a href="<a href="http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html" target="alexandria_uri">http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html</a>"&gt;JNDI LDAP</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">     * Authentication Mechanisms&lt;/a&gt; for more information.</em>
<a name="154" href="#154">154</a> <em class="jxr_javadoccomment">     *</em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * @return the type of LDAP authentication mechanism to use when connecting to the LDAP server.</em>
<a name="156" href="#156">156</a> <em class="jxr_javadoccomment">     * @see &lt;a href="<a href="http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html" target="alexandria_uri">http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html</a>"&gt;</em>
<a name="157" href="#157">157</a> <em class="jxr_javadoccomment">     *      <a href="http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html&lt;/a&gt;" target="alexandria_uri">http://download-llnw.oracle.com/javase/tutorial/jndi/ldap/auth_mechs.html&lt;/a&gt;</a></em>
<a name="158" href="#158">158</a> <em class="jxr_javadoccomment">     */</em>
<a name="159" href="#159">159</a>     <strong class="jxr_keyword">public</strong> String getAuthenticationMechanism() {
<a name="160" href="#160">160</a>         <strong class="jxr_keyword">return</strong> (String) getEnvironmentProperty(Context.SECURITY_AUTHENTICATION);
<a name="161" href="#161">161</a>     }
<a name="162" href="#162">162</a> 
<a name="163" href="#163">163</a>     <em class="jxr_javadoccomment">/**</em>
<a name="164" href="#164">164</a> <em class="jxr_javadoccomment">     * The name of the ContextFactory class to use. This defaults to the SUN LDAP JNDI implementation</em>
<a name="165" href="#165">165</a> <em class="jxr_javadoccomment">     * but can be overridden to use custom LDAP factories.</em>
<a name="166" href="#166">166</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="167" href="#167">167</a> <em class="jxr_javadoccomment">     * This is a wrapper method for setting the JNDI environment's {@link Context#INITIAL_CONTEXT_FACTORY} property.</em>
<a name="168" href="#168">168</a> <em class="jxr_javadoccomment">     *</em>
<a name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * @param contextFactoryClassName the context factory that should be used.</em>
<a name="170" href="#170">170</a> <em class="jxr_javadoccomment">     */</em>
<a name="171" href="#171">171</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setContextFactoryClassName(String contextFactoryClassName) {
<a name="172" href="#172">172</a>         setEnvironmentProperty(Context.INITIAL_CONTEXT_FACTORY, contextFactoryClassName);
<a name="173" href="#173">173</a>     }
<a name="174" href="#174">174</a> 
<a name="175" href="#175">175</a>     <em class="jxr_javadoccomment">/**</em>
<a name="176" href="#176">176</a> <em class="jxr_javadoccomment">     * Sets the name of the ContextFactory class to use. This defaults to the SUN LDAP JNDI implementation</em>
<a name="177" href="#177">177</a> <em class="jxr_javadoccomment">     * but can be overridden to use custom LDAP factories.</em>
<a name="178" href="#178">178</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="179" href="#179">179</a> <em class="jxr_javadoccomment">     * This is a wrapper method for getting the JNDI environment's {@link Context#INITIAL_CONTEXT_FACTORY} property.</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">     *</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * @return the name of the ContextFactory class to use.</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">     */</em>
<a name="183" href="#183">183</a>     <strong class="jxr_keyword">public</strong> String getContextFactoryClassName() {
<a name="184" href="#184">184</a>         <strong class="jxr_keyword">return</strong> (String) getEnvironmentProperty(Context.INITIAL_CONTEXT_FACTORY);
<a name="185" href="#185">185</a>     }
<a name="186" href="#186">186</a> 
<a name="187" href="#187">187</a>     <em class="jxr_javadoccomment">/**</em>
<a name="188" href="#188">188</a> <em class="jxr_javadoccomment">     * Returns the base JNDI environment template to use when acquiring an LDAP connection (an {@link LdapContext}).</em>
<a name="189" href="#189">189</a> <em class="jxr_javadoccomment">     * This property is the base configuration template to use for all connections.  This template is then</em>
<a name="190" href="#190">190</a> <em class="jxr_javadoccomment">     * merged with appropriate runtime values as necessary in the</em>
<a name="191" href="#191">191</a> <em class="jxr_javadoccomment">     * {@link #getLdapContext(Object, Object)} implementation.  The merged environment instance is what is used to</em>
<a name="192" href="#192">192</a> <em class="jxr_javadoccomment">     * acquire the {@link LdapContext} at runtime.</em>
<a name="193" href="#193">193</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="194" href="#194">194</a> <em class="jxr_javadoccomment">     * Most other get/set methods in this class act as thin proxy wrappers that interact with this property.  The</em>
<a name="195" href="#195">195</a> <em class="jxr_javadoccomment">     * benefit of using them is you have an easier-to-use configuration mechanism compared to setting map properties</em>
<a name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * based on JNDI context keys.</em>
<a name="197" href="#197">197</a> <em class="jxr_javadoccomment">     *</em>
<a name="198" href="#198">198</a> <em class="jxr_javadoccomment">     * @return the base JNDI environment template to use when acquiring an LDAP connection (an {@link LdapContext})</em>
<a name="199" href="#199">199</a> <em class="jxr_javadoccomment">     */</em>
<a name="200" href="#200">200</a>     <strong class="jxr_keyword">public</strong> Map getEnvironment() {
<a name="201" href="#201">201</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.environment;
<a name="202" href="#202">202</a>     }
<a name="203" href="#203">203</a> 
<a name="204" href="#204">204</a>     <em class="jxr_javadoccomment">/**</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">     * Sets the base JNDI environment template to use when acquiring LDAP connections.  It is typically more common</em>
<a name="206" href="#206">206</a> <em class="jxr_javadoccomment">     * to use the other get/set methods in this class to set individual environment settings rather than use</em>
<a name="207" href="#207">207</a> <em class="jxr_javadoccomment">     * this method, but it is available for advanced users that want full control over the base JNDI environment</em>
<a name="208" href="#208">208</a> <em class="jxr_javadoccomment">     * settings.</em>
<a name="209" href="#209">209</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="210" href="#210">210</a> <em class="jxr_javadoccomment">     * Note that this template only represents the base/default environment settings.  It is then merged with</em>
<a name="211" href="#211">211</a> <em class="jxr_javadoccomment">     * appropriate runtime values as necessary in the {@link #getLdapContext(Object, Object)} implementation.</em>
<a name="212" href="#212">212</a> <em class="jxr_javadoccomment">     * The merged environment instance is what is used to acquire the connection ({@link LdapContext}) at runtime.</em>
<a name="213" href="#213">213</a> <em class="jxr_javadoccomment">     *</em>
<a name="214" href="#214">214</a> <em class="jxr_javadoccomment">     * @param env the base JNDI environment template to use when acquiring LDAP connections.</em>
<a name="215" href="#215">215</a> <em class="jxr_javadoccomment">     */</em>
<a name="216" href="#216">216</a>     @SuppressWarnings({<span class="jxr_string">"unchecked"</span>})
<a name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setEnvironment(Map env) {
<a name="218" href="#218">218</a>         <strong class="jxr_keyword">this</strong>.environment = env;
<a name="219" href="#219">219</a>     }
<a name="220" href="#220">220</a> 
<a name="221" href="#221">221</a>     <em class="jxr_javadoccomment">/**</em>
<a name="222" href="#222">222</a> <em class="jxr_javadoccomment">     * Returns the environment property value bound under the specified key.</em>
<a name="223" href="#223">223</a> <em class="jxr_javadoccomment">     *</em>
<a name="224" href="#224">224</a> <em class="jxr_javadoccomment">     * @param name the name of the environment property</em>
<a name="225" href="#225">225</a> <em class="jxr_javadoccomment">     * @return the property value or {@code null} if the value has not been set.</em>
<a name="226" href="#226">226</a> <em class="jxr_javadoccomment">     */</em>
<a name="227" href="#227">227</a>     <strong class="jxr_keyword">private</strong> Object getEnvironmentProperty(String name) {
<a name="228" href="#228">228</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.environment.get(name);
<a name="229" href="#229">229</a>     }
<a name="230" href="#230">230</a> 
<a name="231" href="#231">231</a>     <em class="jxr_javadoccomment">/**</em>
<a name="232" href="#232">232</a> <em class="jxr_javadoccomment">     * Will apply the value to the environment attribute if and only if the value is not null or empty.  If it is</em>
<a name="233" href="#233">233</a> <em class="jxr_javadoccomment">     * null or empty, the corresponding environment attribute will be removed.</em>
<a name="234" href="#234">234</a> <em class="jxr_javadoccomment">     *</em>
<a name="235" href="#235">235</a> <em class="jxr_javadoccomment">     * @param name  the environment property key</em>
<a name="236" href="#236">236</a> <em class="jxr_javadoccomment">     * @param value the environment property value.  A null/empty value will trigger removal.</em>
<a name="237" href="#237">237</a> <em class="jxr_javadoccomment">     */</em>
<a name="238" href="#238">238</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setEnvironmentProperty(String name, String value) {
<a name="239" href="#239">239</a>         <strong class="jxr_keyword">if</strong> (StringUtils.hasText(value)) {
<a name="240" href="#240">240</a>             <strong class="jxr_keyword">this</strong>.environment.put(name, value);
<a name="241" href="#241">241</a>         } <strong class="jxr_keyword">else</strong> {
<a name="242" href="#242">242</a>             <strong class="jxr_keyword">this</strong>.environment.remove(name);
<a name="243" href="#243">243</a>         }
<a name="244" href="#244">244</a>     }
<a name="245" href="#245">245</a> 
<a name="246" href="#246">246</a>     <em class="jxr_javadoccomment">/**</em>
<a name="247" href="#247">247</a> <em class="jxr_javadoccomment">     * Returns whether or not connection pooling should be used when possible and appropriate.  This property is NOT</em>
<a name="248" href="#248">248</a> <em class="jxr_javadoccomment">     * backed by the {@link #getEnvironment() environment template} like most other properties in this class.  It</em>
<a name="249" href="#249">249</a> <em class="jxr_javadoccomment">     * is a flag to indicate that pooling is preferred.  The default value is {@code true}.</em>
<a name="250" href="#250">250</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="251" href="#251">251</a> <em class="jxr_javadoccomment">     * However, pooling will only actually be enabled if this property is {@code true} &lt;em&gt;and&lt;/em&gt; the connection</em>
<a name="252" href="#252">252</a> <em class="jxr_javadoccomment">     * being created is for the {@link #getSystemUsername() systemUsername} user.  Connection pooling is not used for</em>
<a name="253" href="#253">253</a> <em class="jxr_javadoccomment">     * general authentication attempts by application end-users because the probability of re-use for that same</em>
<a name="254" href="#254">254</a> <em class="jxr_javadoccomment">     * user-specific connection after an authentication attempt is extremely low.</em>
<a name="255" href="#255">255</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="256" href="#256">256</a> <em class="jxr_javadoccomment">     * If this attribute is {@code true} and it has been determined that the connection is being made with the</em>
<a name="257" href="#257">257</a> <em class="jxr_javadoccomment">     * {@link #getSystemUsername() systemUsername}, the</em>
<a name="258" href="#258">258</a> <em class="jxr_javadoccomment">     * {@link #getLdapContext(Object, Object)} implementation will set the Sun/Oracle-specific</em>
<a name="259" href="#259">259</a> <em class="jxr_javadoccomment">     * {@code com.sun.jndi.ldap.connect.pool} environment property to &amp;quot;{@code true}&amp;quot;.  This means setting</em>
<a name="260" href="#260">260</a> <em class="jxr_javadoccomment">     * this property is only likely to work if using the Sun/Oracle default context factory class (i.e. not using</em>
<a name="261" href="#261">261</a> <em class="jxr_javadoccomment">     * a custom {@link #getContextFactoryClassName() contextFactoryClassName}).</em>
<a name="262" href="#262">262</a> <em class="jxr_javadoccomment">     *</em>
<a name="263" href="#263">263</a> <em class="jxr_javadoccomment">     * @return whether or not connection pooling should be used when possible and appropriate</em>
<a name="264" href="#264">264</a> <em class="jxr_javadoccomment">     */</em>
<a name="265" href="#265">265</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isPoolingEnabled() {
<a name="266" href="#266">266</a>         <strong class="jxr_keyword">return</strong> poolingEnabled;
<a name="267" href="#267">267</a>     }
<a name="268" href="#268">268</a> 
<a name="269" href="#269">269</a>     <em class="jxr_javadoccomment">/**</em>
<a name="270" href="#270">270</a> <em class="jxr_javadoccomment">     * Sets whether or not connection pooling should be used when possible and appropriate.  This property is NOT</em>
<a name="271" href="#271">271</a> <em class="jxr_javadoccomment">     * a wrapper to the {@link #getEnvironment() environment template} like most other properties in this class.  It</em>
<a name="272" href="#272">272</a> <em class="jxr_javadoccomment">     * is a flag to indicate that pooling is preferred.  The default value is {@code true}.</em>
<a name="273" href="#273">273</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="274" href="#274">274</a> <em class="jxr_javadoccomment">     * However, pooling will only actually be enabled if this property is {@code true} &lt;em&gt;and&lt;/em&gt; the connection</em>
<a name="275" href="#275">275</a> <em class="jxr_javadoccomment">     * being created is for the {@link #getSystemUsername() systemUsername} user.  Connection pooling is not used for</em>
<a name="276" href="#276">276</a> <em class="jxr_javadoccomment">     * general authentication attempts by application end-users because the probability of re-use for that same</em>
<a name="277" href="#277">277</a> <em class="jxr_javadoccomment">     * user-specific connection after an authentication attempt is extremely low.</em>
<a name="278" href="#278">278</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="279" href="#279">279</a> <em class="jxr_javadoccomment">     * If this attribute is {@code true} and it has been determined that the connection is being made with the</em>
<a name="280" href="#280">280</a> <em class="jxr_javadoccomment">     * {@link #getSystemUsername() systemUsername}, the</em>
<a name="281" href="#281">281</a> <em class="jxr_javadoccomment">     * {@link #getLdapContext(Object, Object)} implementation will set the Sun/Oracle-specific</em>
<a name="282" href="#282">282</a> <em class="jxr_javadoccomment">     * {@code com.sun.jndi.ldap.connect.pool} environment property to &amp;quot;{@code true}&amp;quot;.  This means setting</em>
<a name="283" href="#283">283</a> <em class="jxr_javadoccomment">     * this property is only likely to work if using the Sun/Oracle default context factory class (i.e. not using</em>
<a name="284" href="#284">284</a> <em class="jxr_javadoccomment">     * a custom {@link #getContextFactoryClassName() contextFactoryClassName}).</em>
<a name="285" href="#285">285</a> <em class="jxr_javadoccomment">     *</em>
<a name="286" href="#286">286</a> <em class="jxr_javadoccomment">     * @param poolingEnabled whether or not connection pooling should be used when possible and appropriate</em>
<a name="287" href="#287">287</a> <em class="jxr_javadoccomment">     */</em>
<a name="288" href="#288">288</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setPoolingEnabled(<strong class="jxr_keyword">boolean</strong> poolingEnabled) {
<a name="289" href="#289">289</a>         <strong class="jxr_keyword">this</strong>.poolingEnabled = poolingEnabled;
<a name="290" href="#290">290</a>     }
<a name="291" href="#291">291</a> 
<a name="292" href="#292">292</a>     <em class="jxr_javadoccomment">/**</em>
<a name="293" href="#293">293</a> <em class="jxr_javadoccomment">     * Sets the LDAP referral behavior when creating a connection.  Defaults to {@code follow}.  See the Sun/Oracle LDAP</em>
<a name="294" href="#294">294</a> <em class="jxr_javadoccomment">     * &lt;a href="<a href="http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html" target="alexandria_uri">http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html</a>"&gt;referral documentation&lt;/a&gt; for more.</em>
<a name="295" href="#295">295</a> <em class="jxr_javadoccomment">     *</em>
<a name="296" href="#296">296</a> <em class="jxr_javadoccomment">     * @param referral the referral property.</em>
<a name="297" href="#297">297</a> <em class="jxr_javadoccomment">     * @see &lt;a href="<a href="http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html" target="alexandria_uri">http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html</a>"&gt;Referrals in JNDI&lt;/a&gt;</em>
<a name="298" href="#298">298</a> <em class="jxr_javadoccomment">     */</em>
<a name="299" href="#299">299</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setReferral(String referral) {
<a name="300" href="#300">300</a>         setEnvironmentProperty(Context.REFERRAL, referral);
<a name="301" href="#301">301</a>     }
<a name="302" href="#302">302</a> 
<a name="303" href="#303">303</a>     <em class="jxr_javadoccomment">/**</em>
<a name="304" href="#304">304</a> <em class="jxr_javadoccomment">     * Returns the LDAP referral behavior when creating a connection.  Defaults to {@code follow}.</em>
<a name="305" href="#305">305</a> <em class="jxr_javadoccomment">     * See the Sun/Oracle LDAP</em>
<a name="306" href="#306">306</a> <em class="jxr_javadoccomment">     * &lt;a href="<a href="http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html" target="alexandria_uri">http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html</a>"&gt;referral documentation&lt;/a&gt; for more.</em>
<a name="307" href="#307">307</a> <em class="jxr_javadoccomment">     *</em>
<a name="308" href="#308">308</a> <em class="jxr_javadoccomment">     * @return the LDAP referral behavior when creating a connection.</em>
<a name="309" href="#309">309</a> <em class="jxr_javadoccomment">     * @see &lt;a href="<a href="http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html" target="alexandria_uri">http://java.sun.com/products/jndi/tutorial/ldap/referral/jndi.html</a>"&gt;Referrals in JNDI&lt;/a&gt;</em>
<a name="310" href="#310">310</a> <em class="jxr_javadoccomment">     */</em>
<a name="311" href="#311">311</a>     <strong class="jxr_keyword">public</strong> String getReferral() {
<a name="312" href="#312">312</a>         <strong class="jxr_keyword">return</strong> (String) getEnvironmentProperty(Context.REFERRAL);
<a name="313" href="#313">313</a>     }
<a name="314" href="#314">314</a> 
<a name="315" href="#315">315</a>     <em class="jxr_javadoccomment">/**</em>
<a name="316" href="#316">316</a> <em class="jxr_javadoccomment">     * The LDAP url to connect to. (e.g. ldap://&amp;lt;ldapDirectoryHostname&amp;gt;:&amp;lt;port&amp;gt;).  This must be configured.</em>
<a name="317" href="#317">317</a> <em class="jxr_javadoccomment">     *</em>
<a name="318" href="#318">318</a> <em class="jxr_javadoccomment">     * @param url the LDAP url to connect to. (e.g. ldap://&amp;lt;ldapDirectoryHostname&amp;gt;:&amp;lt;port&amp;gt;)</em>
<a name="319" href="#319">319</a> <em class="jxr_javadoccomment">     */</em>
<a name="320" href="#320">320</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUrl(String url) {
<a name="321" href="#321">321</a>         setEnvironmentProperty(Context.PROVIDER_URL, url);
<a name="322" href="#322">322</a>     }
<a name="323" href="#323">323</a> 
<a name="324" href="#324">324</a>     <em class="jxr_javadoccomment">/**</em>
<a name="325" href="#325">325</a> <em class="jxr_javadoccomment">     * Returns the LDAP url to connect to. (e.g. ldap://&amp;lt;ldapDirectoryHostname&amp;gt;:&amp;lt;port&amp;gt;).</em>
<a name="326" href="#326">326</a> <em class="jxr_javadoccomment">     * This must be configured.</em>
<a name="327" href="#327">327</a> <em class="jxr_javadoccomment">     *</em>
<a name="328" href="#328">328</a> <em class="jxr_javadoccomment">     * @return the LDAP url to connect to. (e.g. ldap://&amp;lt;ldapDirectoryHostname&amp;gt;:&amp;lt;port&amp;gt;)</em>
<a name="329" href="#329">329</a> <em class="jxr_javadoccomment">     */</em>
<a name="330" href="#330">330</a>     <strong class="jxr_keyword">public</strong> String getUrl() {
<a name="331" href="#331">331</a>         <strong class="jxr_keyword">return</strong> (String) getEnvironmentProperty(Context.PROVIDER_URL);
<a name="332" href="#332">332</a>     }
<a name="333" href="#333">333</a> 
<a name="334" href="#334">334</a>     <em class="jxr_javadoccomment">/**</em>
<a name="335" href="#335">335</a> <em class="jxr_javadoccomment">     * Sets the password of the {@link #setSystemUsername(String) systemUsername} that will be used when creating an</em>
<a name="336" href="#336">336</a> <em class="jxr_javadoccomment">     * LDAP connection used for authorization queries.</em>
<a name="337" href="#337">337</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="338" href="#338">338</a> <em class="jxr_javadoccomment">     * Note that setting this property is not required if the calling LDAP Realm does not perform authorization</em>
<a name="339" href="#339">339</a> <em class="jxr_javadoccomment">     * checks.</em>
<a name="340" href="#340">340</a> <em class="jxr_javadoccomment">     *</em>
<a name="341" href="#341">341</a> <em class="jxr_javadoccomment">     * @param systemPassword the password of the {@link #setSystemUsername(String) systemUsername} that will be used</em>
<a name="342" href="#342">342</a> <em class="jxr_javadoccomment">     *                       when creating an LDAP connection used for authorization queries.</em>
<a name="343" href="#343">343</a> <em class="jxr_javadoccomment">     */</em>
<a name="344" href="#344">344</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSystemPassword(String systemPassword) {
<a name="345" href="#345">345</a>         <strong class="jxr_keyword">this</strong>.systemPassword = systemPassword;
<a name="346" href="#346">346</a>     }
<a name="347" href="#347">347</a> 
<a name="348" href="#348">348</a>     <em class="jxr_javadoccomment">/**</em>
<a name="349" href="#349">349</a> <em class="jxr_javadoccomment">     * Returns the password of the {@link #setSystemUsername(String) systemUsername} that will be used when creating an</em>
<a name="350" href="#350">350</a> <em class="jxr_javadoccomment">     * LDAP connection used for authorization queries.</em>
<a name="351" href="#351">351</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="352" href="#352">352</a> <em class="jxr_javadoccomment">     * Note that setting this property is not required if the calling LDAP Realm does not perform authorization</em>
<a name="353" href="#353">353</a> <em class="jxr_javadoccomment">     * checks.</em>
<a name="354" href="#354">354</a> <em class="jxr_javadoccomment">     *</em>
<a name="355" href="#355">355</a> <em class="jxr_javadoccomment">     * @return the password of the {@link #setSystemUsername(String) systemUsername} that will be used when creating an</em>
<a name="356" href="#356">356</a> <em class="jxr_javadoccomment">     *         LDAP connection used for authorization queries.</em>
<a name="357" href="#357">357</a> <em class="jxr_javadoccomment">     */</em>
<a name="358" href="#358">358</a>     <strong class="jxr_keyword">public</strong> String getSystemPassword() {
<a name="359" href="#359">359</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.systemPassword;
<a name="360" href="#360">360</a>     }
<a name="361" href="#361">361</a> 
<a name="362" href="#362">362</a>     <em class="jxr_javadoccomment">/**</em>
<a name="363" href="#363">363</a> <em class="jxr_javadoccomment">     * Sets the system username that will be used when creating an LDAP connection used for authorization queries.</em>
<a name="364" href="#364">364</a> <em class="jxr_javadoccomment">     * The user must have the ability to query for authorization data for any application user.</em>
<a name="365" href="#365">365</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="366" href="#366">366</a> <em class="jxr_javadoccomment">     * Note that setting this property is not required if the calling LDAP Realm does not perform authorization</em>
<a name="367" href="#367">367</a> <em class="jxr_javadoccomment">     * checks.</em>
<a name="368" href="#368">368</a> <em class="jxr_javadoccomment">     *</em>
<a name="369" href="#369">369</a> <em class="jxr_javadoccomment">     * @param systemUsername the system username that will be used when creating an LDAP connection used for</em>
<a name="370" href="#370">370</a> <em class="jxr_javadoccomment">     *                       authorization queries.</em>
<a name="371" href="#371">371</a> <em class="jxr_javadoccomment">     */</em>
<a name="372" href="#372">372</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSystemUsername(String systemUsername) {
<a name="373" href="#373">373</a>         <strong class="jxr_keyword">this</strong>.systemUsername = systemUsername;
<a name="374" href="#374">374</a>     }
<a name="375" href="#375">375</a> 
<a name="376" href="#376">376</a>     <em class="jxr_javadoccomment">/**</em>
<a name="377" href="#377">377</a> <em class="jxr_javadoccomment">     * Returns the system username that will be used when creating an LDAP connection used for authorization queries.</em>
<a name="378" href="#378">378</a> <em class="jxr_javadoccomment">     * The user must have the ability to query for authorization data for any application user.</em>
<a name="379" href="#379">379</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="380" href="#380">380</a> <em class="jxr_javadoccomment">     * Note that setting this property is not required if the calling LDAP Realm does not perform authorization</em>
<a name="381" href="#381">381</a> <em class="jxr_javadoccomment">     * checks.</em>
<a name="382" href="#382">382</a> <em class="jxr_javadoccomment">     *</em>
<a name="383" href="#383">383</a> <em class="jxr_javadoccomment">     * @return the system username that will be used when creating an LDAP connection used for authorization queries.</em>
<a name="384" href="#384">384</a> <em class="jxr_javadoccomment">     */</em>
<a name="385" href="#385">385</a>     <strong class="jxr_keyword">public</strong> String getSystemUsername() {
<a name="386" href="#386">386</a>         <strong class="jxr_keyword">return</strong> systemUsername;
<a name="387" href="#387">387</a>     }
<a name="388" href="#388">388</a> 
<a name="389" href="#389">389</a>     <em class="jxr_comment">/*<em class="jxr_comment">--------------------------------------------</em></em>
<a name="390" href="#390">390</a> <em class="jxr_comment">    |               M E T H O D S               |</em>
<a name="391" href="#391">391</a> <em class="jxr_comment">    ============================================*/</em>
<a name="392" href="#392">392</a> 
<a name="393" href="#393">393</a>     <em class="jxr_javadoccomment">/**</em>
<a name="394" href="#394">394</a> <em class="jxr_javadoccomment">     * This implementation delegates to {@link #getLdapContext(Object, Object)} using the</em>
<a name="395" href="#395">395</a> <em class="jxr_javadoccomment">     * {@link #getSystemUsername() systemUsername} and {@link #getSystemPassword() systemPassword} properties as</em>
<a name="396" href="#396">396</a> <em class="jxr_javadoccomment">     * arguments.</em>
<a name="397" href="#397">397</a> <em class="jxr_javadoccomment">     *</em>
<a name="398" href="#398">398</a> <em class="jxr_javadoccomment">     * @return the system LdapContext</em>
<a name="399" href="#399">399</a> <em class="jxr_javadoccomment">     * @throws NamingException if there is a problem connecting to the LDAP directory</em>
<a name="400" href="#400">400</a> <em class="jxr_javadoccomment">     */</em>
<a name="401" href="#401">401</a>     <strong class="jxr_keyword">public</strong> LdapContext getSystemLdapContext() <strong class="jxr_keyword">throws</strong> NamingException {
<a name="402" href="#402">402</a>         <strong class="jxr_keyword">return</strong> getLdapContext((Object)getSystemUsername(), getSystemPassword());
<a name="403" href="#403">403</a>     }
<a name="404" href="#404">404</a> 
<a name="405" href="#405">405</a>     <em class="jxr_javadoccomment">/**</em>
<a name="406" href="#406">406</a> <em class="jxr_javadoccomment">     * Deprecated - use {@link #getLdapContext(Object, Object)} instead.  This will be removed before Apache Shiro 2.0.</em>
<a name="407" href="#407">407</a> <em class="jxr_javadoccomment">     *</em>
<a name="408" href="#408">408</a> <em class="jxr_javadoccomment">     * @param username the username to use when creating the connection.</em>
<a name="409" href="#409">409</a> <em class="jxr_javadoccomment">     * @param password the password to use when creating the connection.</em>
<a name="410" href="#410">410</a> <em class="jxr_javadoccomment">     * @return a {@code LdapContext} bound using the given username and password.</em>
<a name="411" href="#411">411</a> <em class="jxr_javadoccomment">     * @throws javax.naming.NamingException if there is an error creating the context.</em>
<a name="412" href="#412">412</a> <em class="jxr_javadoccomment">     * @deprecated the {@link #getLdapContext(Object, Object)} method should be used in all cases to ensure more than</em>
<a name="413" href="#413">413</a> <em class="jxr_javadoccomment">     *             String principals and credentials can be used.  Shiro no longer calls this method - it will be</em>
<a name="414" href="#414">414</a> <em class="jxr_javadoccomment">     *             removed before the 2.0 release.</em>
<a name="415" href="#415">415</a> <em class="jxr_javadoccomment">     */</em>
<a name="416" href="#416">416</a>     @Deprecated
<a name="417" href="#417">417</a>     <strong class="jxr_keyword">public</strong> LdapContext getLdapContext(String username, String password) <strong class="jxr_keyword">throws</strong> NamingException {
<a name="418" href="#418">418</a>         <strong class="jxr_keyword">return</strong> getLdapContext((Object) username, password);
<a name="419" href="#419">419</a>     }
<a name="420" href="#420">420</a> 
<a name="421" href="#421">421</a>     <em class="jxr_javadoccomment">/**</em>
<a name="422" href="#422">422</a> <em class="jxr_javadoccomment">     * Returns {@code true} if LDAP connection pooling should be used when acquiring a connection based on the specified</em>
<a name="423" href="#423">423</a> <em class="jxr_javadoccomment">     * account principal, {@code false} otherwise.</em>
<a name="424" href="#424">424</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="425" href="#425">425</a> <em class="jxr_javadoccomment">     * This implementation returns {@code true} only if {@link #isPoolingEnabled()} and the principal equals the</em>
<a name="426" href="#426">426</a> <em class="jxr_javadoccomment">     * {@link #getSystemUsername()}.  The reasoning behind this is that connection pooling is not desirable for</em>
<a name="427" href="#427">427</a> <em class="jxr_javadoccomment">     * general authentication attempts by application end-users because the probability of re-use for that same</em>
<a name="428" href="#428">428</a> <em class="jxr_javadoccomment">     * user-specific connection after an authentication attempt is extremely low.</em>
<a name="429" href="#429">429</a> <em class="jxr_javadoccomment">     *</em>
<a name="430" href="#430">430</a> <em class="jxr_javadoccomment">     * @param principal the principal under which the connection will be made</em>
<a name="431" href="#431">431</a> <em class="jxr_javadoccomment">     * @return {@code true} if LDAP connection pooling should be used when acquiring a connection based on the specified</em>
<a name="432" href="#432">432</a> <em class="jxr_javadoccomment">     *         account principal, {@code false} otherwise.</em>
<a name="433" href="#433">433</a> <em class="jxr_javadoccomment">     */</em>
<a name="434" href="#434">434</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isPoolingConnections(Object principal) {
<a name="435" href="#435">435</a>         <strong class="jxr_keyword">return</strong> isPoolingEnabled() &amp;&amp; principal != <strong class="jxr_keyword">null</strong> &amp;&amp; principal.equals(getSystemUsername());
<a name="436" href="#436">436</a>     }
<a name="437" href="#437">437</a> 
<a name="438" href="#438">438</a>     <em class="jxr_javadoccomment">/**</em>
<a name="439" href="#439">439</a> <em class="jxr_javadoccomment">     * This implementation returns an LdapContext based on the configured JNDI/LDAP environment configuration.</em>
<a name="440" href="#440">440</a> <em class="jxr_javadoccomment">     * The environnmet (Map) used at runtime is created by merging the default/configured</em>
<a name="441" href="#441">441</a> <em class="jxr_javadoccomment">     * {@link #getEnvironment() environment template} with some runtime values as necessary (e.g. a principal and</em>
<a name="442" href="#442">442</a> <em class="jxr_javadoccomment">     * credential available at runtime only).</em>
<a name="443" href="#443">443</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="444" href="#444">444</a> <em class="jxr_javadoccomment">     * After the merged Map instance is created, the LdapContext connection is</em>
<a name="445" href="#445">445</a> <em class="jxr_javadoccomment">     * {@link #createLdapContext(java.util.Hashtable) created} and returned.</em>
<a name="446" href="#446">446</a> <em class="jxr_javadoccomment">     *</em>
<a name="447" href="#447">447</a> <em class="jxr_javadoccomment">     * @param principal   the principal to use when acquiring a connection to the LDAP directory</em>
<a name="448" href="#448">448</a> <em class="jxr_javadoccomment">     * @param credentials the credentials (password, X.509 certificate, etc) to use when acquiring a connection to the</em>
<a name="449" href="#449">449</a> <em class="jxr_javadoccomment">     *                    LDAP directory</em>
<a name="450" href="#450">450</a> <em class="jxr_javadoccomment">     * @return the acquired {@code LdapContext} connection bound using the specified principal and credentials.</em>
<a name="451" href="#451">451</a> <em class="jxr_javadoccomment">     * @throws NamingException</em>
<a name="452" href="#452">452</a> <em class="jxr_javadoccomment">     * @throws IllegalStateException</em>
<a name="453" href="#453">453</a> <em class="jxr_javadoccomment">     */</em>
<a name="454" href="#454">454</a>     <strong class="jxr_keyword">public</strong> LdapContext getLdapContext(Object principal, Object credentials) <strong class="jxr_keyword">throws</strong> NamingException,
<a name="455" href="#455">455</a>             IllegalStateException {
<a name="456" href="#456">456</a> 
<a name="457" href="#457">457</a>         String url = getUrl();
<a name="458" href="#458">458</a>         <strong class="jxr_keyword">if</strong> (url == <strong class="jxr_keyword">null</strong>) {
<a name="459" href="#459">459</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"An LDAP URL must be specified of the form ldap://&lt;hostname&gt;:&lt;port&gt;"</span>);
<a name="460" href="#460">460</a>         }
<a name="461" href="#461">461</a> 
<a name="462" href="#462">462</a>         <em class="jxr_comment">//copy the environment template into the runtime instance that will be further edited based on</em>
<a name="463" href="#463">463</a>         <em class="jxr_comment">//the method arguments and other class attributes.</em>
<a name="464" href="#464">464</a>         Hashtable&lt;String, Object&gt; env = <strong class="jxr_keyword">new</strong> Hashtable&lt;String, Object&gt;(<strong class="jxr_keyword">this</strong>.environment);
<a name="465" href="#465">465</a> 
<a name="466" href="#466">466</a>         Object authcMech = getAuthenticationMechanism();
<a name="467" href="#467">467</a>         <strong class="jxr_keyword">if</strong> (authcMech == <strong class="jxr_keyword">null</strong> &amp;&amp; (principal != <strong class="jxr_keyword">null</strong> || credentials != <strong class="jxr_keyword">null</strong>)) {
<a name="468" href="#468">468</a>             <em class="jxr_comment">//authenticationMechanism has not been set, but either a principal and/or credentials were</em>
<a name="469" href="#469">469</a>             <em class="jxr_comment">//supplied, indicating that at least a 'simple' authentication attempt is indeed occurring - the Shiro</em>
<a name="470" href="#470">470</a>             <em class="jxr_comment">//end-user just didn't configure it explicitly.  So we set it to be 'simple' here as a convenience;</em>
<a name="471" href="#471">471</a>             <em class="jxr_comment">//the Sun provider implementation already does this same logic, but by repeating that logic here, we ensure</em>
<a name="472" href="#472">472</a>             <em class="jxr_comment">//this convenience exists regardless of provider implementation):</em>
<a name="473" href="#473">473</a>             env.put(Context.SECURITY_AUTHENTICATION, SIMPLE_AUTHENTICATION_MECHANISM_NAME);
<a name="474" href="#474">474</a>         }
<a name="475" href="#475">475</a>         <strong class="jxr_keyword">if</strong> (principal != <strong class="jxr_keyword">null</strong>) {
<a name="476" href="#476">476</a>             env.put(Context.SECURITY_PRINCIPAL, principal);
<a name="477" href="#477">477</a>         }
<a name="478" href="#478">478</a>         <strong class="jxr_keyword">if</strong> (credentials != <strong class="jxr_keyword">null</strong>) {
<a name="479" href="#479">479</a>             env.put(Context.SECURITY_CREDENTIALS, credentials);
<a name="480" href="#480">480</a>         }
<a name="481" href="#481">481</a> 
<a name="482" href="#482">482</a>         <strong class="jxr_keyword">boolean</strong> pooling = isPoolingConnections(principal);
<a name="483" href="#483">483</a>         <strong class="jxr_keyword">if</strong> (pooling) {
<a name="484" href="#484">484</a>             env.put(SUN_CONNECTION_POOLING_PROPERTY, <span class="jxr_string">"true"</span>);
<a name="485" href="#485">485</a>         }
<a name="486" href="#486">486</a> 
<a name="487" href="#487">487</a>         <strong class="jxr_keyword">if</strong> (log.isDebugEnabled()) {
<a name="488" href="#488">488</a>             log.debug(<span class="jxr_string">"Initializing LDAP context using URL [{}] and principal [{}] with pooling {}"</span>,
<a name="489" href="#489">489</a>                     <strong class="jxr_keyword">new</strong> Object[]{url, principal, (pooling ? <span class="jxr_string">"enabled"</span> : <span class="jxr_string">"disabled"</span>)});
<a name="490" href="#490">490</a>         }
<a name="491" href="#491">491</a> 
<a name="492" href="#492">492</a>         <em class="jxr_comment">// validate the config before creating the context</em>
<a name="493" href="#493">493</a>         validateAuthenticationInfo(env);
<a name="494" href="#494">494</a> 
<a name="495" href="#495">495</a>         <strong class="jxr_keyword">return</strong> createLdapContext(env);
<a name="496" href="#496">496</a>     }
<a name="497" href="#497">497</a> 
<a name="498" href="#498">498</a>     <em class="jxr_javadoccomment">/**</em>
<a name="499" href="#499">499</a> <em class="jxr_javadoccomment">     * Creates and returns a new {@link javax.naming.ldap.InitialLdapContext} instance.  This method exists primarily</em>
<a name="500" href="#500">500</a> <em class="jxr_javadoccomment">     * to support testing where a mock LdapContext can be returned instead of actually creating a connection, but</em>
<a name="501" href="#501">501</a> <em class="jxr_javadoccomment">     * subclasses are free to provide a different implementation if necessary.</em>
<a name="502" href="#502">502</a> <em class="jxr_javadoccomment">     *</em>
<a name="503" href="#503">503</a> <em class="jxr_javadoccomment">     * @param env the JNDI environment settings used to create the LDAP connection</em>
<a name="504" href="#504">504</a> <em class="jxr_javadoccomment">     * @return an LdapConnection</em>
<a name="505" href="#505">505</a> <em class="jxr_javadoccomment">     * @throws NamingException if a problem occurs creating the connection</em>
<a name="506" href="#506">506</a> <em class="jxr_javadoccomment">     */</em>
<a name="507" href="#507">507</a>     <strong class="jxr_keyword">protected</strong> LdapContext createLdapContext(Hashtable env) <strong class="jxr_keyword">throws</strong> NamingException {
<a name="508" href="#508">508</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> InitialLdapContext(env, <strong class="jxr_keyword">null</strong>);
<a name="509" href="#509">509</a>     }
<a name="510" href="#510">510</a> 
<a name="511" href="#511">511</a> 
<a name="512" href="#512">512</a>     <em class="jxr_javadoccomment">/**</em>
<a name="513" href="#513">513</a> <em class="jxr_javadoccomment">     * Validates the configuration in the JNDI &lt;code&gt;environment&lt;/code&gt; settings and throws an exception if a problem</em>
<a name="514" href="#514">514</a> <em class="jxr_javadoccomment">     * exists.</em>
<a name="515" href="#515">515</a> <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="516" href="#516">516</a> <em class="jxr_javadoccomment">     * This implementation will throw a {@link AuthenticationException} if the authentication mechanism is set to</em>
<a name="517" href="#517">517</a> <em class="jxr_javadoccomment">     * 'simple', the principal is non-empty, and the credentials are empty (as per</em>
<a name="518" href="#518">518</a> <em class="jxr_javadoccomment">     * &lt;a href="<a href="http://tools.ietf.org/html/rfc4513" target="alexandria_uri">http://tools.ietf.org/html/rfc4513</a>#section-5.1.2"&gt;rfc4513 section-5.1.2&lt;/a&gt;).</em>
<a name="519" href="#519">519</a> <em class="jxr_javadoccomment">     *</em>
<a name="520" href="#520">520</a> <em class="jxr_javadoccomment">     * @param environment the JNDI environment settings to be validated</em>
<a name="521" href="#521">521</a> <em class="jxr_javadoccomment">     * @throws AuthenticationException if a configuration problem is detected</em>
<a name="522" href="#522">522</a> <em class="jxr_javadoccomment">     */</em>
<a name="523" href="#523">523</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> validateAuthenticationInfo(Hashtable&lt;String, Object&gt; environment)
<a name="524" href="#524">524</a>         <strong class="jxr_keyword">throws</strong> AuthenticationException
<a name="525" href="#525">525</a>     {
<a name="526" href="#526">526</a>         <em class="jxr_comment">// validate when using Simple auth both principal and credentials are set</em>
<a name="527" href="#527">527</a>         <strong class="jxr_keyword">if</strong>(SIMPLE_AUTHENTICATION_MECHANISM_NAME.equals(environment.get(Context.SECURITY_AUTHENTICATION))) {
<a name="528" href="#528">528</a> 
<a name="529" href="#529">529</a>             <em class="jxr_comment">// only validate credentials if we have a non-empty principal</em>
<a name="530" href="#530">530</a>             <strong class="jxr_keyword">if</strong>( environment.get(Context.SECURITY_PRINCIPAL) != <strong class="jxr_keyword">null</strong> &amp;&amp;
<a name="531" href="#531">531</a>                 StringUtils.hasText( String.valueOf( environment.get(Context.SECURITY_PRINCIPAL) ))) {
<a name="532" href="#532">532</a> 
<a name="533" href="#533">533</a>                 Object credentials = environment.get(Context.SECURITY_CREDENTIALS);
<a name="534" href="#534">534</a> 
<a name="535" href="#535">535</a>                 <em class="jxr_comment">// from the FAQ, we need to check for empty credentials:</em>
<a name="536" href="#536">536</a>                 <em class="jxr_comment">// http://docs.oracle.com/javase/tutorial/jndi/ldap/faq.html</em>
<a name="537" href="#537">537</a>                 <strong class="jxr_keyword">if</strong>( credentials == <strong class="jxr_keyword">null</strong> ||
<a name="538" href="#538">538</a>                     (credentials instanceof byte[] &amp;&amp; ((byte[])credentials).length &lt;= 0) || <em class="jxr_comment">// empty byte[]</em>
<a name="539" href="#539">539</a>                     (credentials instanceof <strong class="jxr_keyword">char</strong>[] &amp;&amp; ((<strong class="jxr_keyword">char</strong>[])credentials).length &lt;= 0) || <em class="jxr_comment">// empty char[]</em>
<a name="540" href="#540">540</a>                     (String.<strong class="jxr_keyword">class</strong>.isInstance(credentials) &amp;&amp; !StringUtils.hasText(String.valueOf(credentials)))) {
<a name="541" href="#541">541</a> 
<a name="542" href="#542">542</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> javax.naming.AuthenticationException(<span class="jxr_string">"LDAP Simple authentication requires both a "</span>
<a name="543" href="#543">543</a>                                                                        + <span class="jxr_string">"principal and credentials."</span>);
<a name="544" href="#544">544</a>                 }
<a name="545" href="#545">545</a>             }
<a name="546" href="#546">546</a>         }
<a name="547" href="#547">547</a>     }
<a name="548" href="#548">548</a> 
<a name="549" href="#549">549</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>
