| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
| <title>Coverage Report</title> |
| <link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/> |
| <script type="text/javascript" src="js/popup.js"></script> |
| </head> |
| <body> |
| <h5>Coverage Report - org.apache.shiro.realm.AuthenticatingRealm</h5> |
| <div class="separator"> </div> |
| <table class="report"> |
| <thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead> |
| <tr><td><a href="org.apache.shiro.realm.AuthenticatingRealm.html">AuthenticatingRealm</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">111/111</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">75%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:75px"><span class="text">42/56</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.935483870967742;</span>1.935</td></tr> |
| |
| </table> |
| <div class="separator"> </div> |
| <table cellspacing="0" cellpadding="0" class="src"> |
| <tr> <td class="numLine"> 1</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr> |
| <tr> <td class="numLine"> 2</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></pre></td></tr> |
| <tr> <td class="numLine"> 3</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></pre></td></tr> |
| <tr> <td class="numLine"> 4</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * distributed with this work for additional information</span></pre></td></tr> |
| <tr> <td class="numLine"> 5</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></pre></td></tr> |
| <tr> <td class="numLine"> 6</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></pre></td></tr> |
| <tr> <td class="numLine"> 7</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "License"); you may not use this file except in compliance</span></pre></td></tr> |
| <tr> <td class="numLine"> 8</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with the License. You may obtain a copy of the License at</span></pre></td></tr> |
| <tr> <td class="numLine"> 9</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 10</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 11</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 12</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Unless required by applicable law or agreed to in writing,</span></pre></td></tr> |
| <tr> <td class="numLine"> 13</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * software distributed under the License is distributed on an</span></pre></td></tr> |
| <tr> <td class="numLine"> 14</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></pre></td></tr> |
| <tr> <td class="numLine"> 15</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * KIND, either express or implied. See the License for the</span></pre></td></tr> |
| <tr> <td class="numLine"> 16</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specific language governing permissions and limitations</span></pre></td></tr> |
| <tr> <td class="numLine"> 17</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * under the License.</span></pre></td></tr> |
| <tr> <td class="numLine"> 18</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 19</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">package</span> org.apache.shiro.realm;</pre></td></tr> |
| <tr> <td class="numLine"> 20</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 21</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authc.*;</pre></td></tr> |
| <tr> <td class="numLine"> 22</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authc.credential.AllowAllCredentialsMatcher;</pre></td></tr> |
| <tr> <td class="numLine"> 23</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authc.credential.CredentialsMatcher;</pre></td></tr> |
| <tr> <td class="numLine"> 24</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authc.credential.SimpleCredentialsMatcher;</pre></td></tr> |
| <tr> <td class="numLine"> 25</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.cache.Cache;</pre></td></tr> |
| <tr> <td class="numLine"> 26</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.cache.CacheManager;</pre></td></tr> |
| <tr> <td class="numLine"> 27</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.subject.PrincipalCollection;</pre></td></tr> |
| <tr> <td class="numLine"> 28</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.util.CollectionUtils;</pre></td></tr> |
| <tr> <td class="numLine"> 29</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.util.Initializable;</pre></td></tr> |
| <tr> <td class="numLine"> 30</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.slf4j.Logger;</pre></td></tr> |
| <tr> <td class="numLine"> 31</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.slf4j.LoggerFactory;</pre></td></tr> |
| <tr> <td class="numLine"> 32</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 33</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.concurrent.atomic.AtomicInteger;</pre></td></tr> |
| <tr> <td class="numLine"> 34</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 35</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 36</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 37</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * A top-level abstract implementation of the <tt>Realm</tt> interface that only implements authentication support</span></pre></td></tr> |
| <tr> <td class="numLine"> 38</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (log-in) operations and leaves authorization (access control) behavior to subclasses.</span></pre></td></tr> |
| <tr> <td class="numLine"> 39</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h2>Authentication Caching</h2></span></pre></td></tr> |
| <tr> <td class="numLine"> 40</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * For applications that perform frequent repeated authentication of the same accounts (e.g. as is often done in</span></pre></td></tr> |
| <tr> <td class="numLine"> 41</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * REST or Soap applications that authenticate on every request), it might be prudent to enable authentication</span></pre></td></tr> |
| <tr> <td class="numLine"> 42</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * caching to alleviate constant load on any back-end data sources.</span></pre></td></tr> |
| <tr> <td class="numLine"> 43</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 44</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This feature is disabled by default to retain backwards-compatibility with Shiro 1.1 and earlier. It may be</span></pre></td></tr> |
| <tr> <td class="numLine"> 45</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * enabled by setting {@link #setAuthenticationCachingEnabled(boolean) authenticationCachingEnabled} = {@code true}</span></pre></td></tr> |
| <tr> <td class="numLine"> 46</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (and configuring Shiro with a {@link CacheManager} of course), but <b>NOTE:</b></span></pre></td></tr> |
| <tr> <td class="numLine"> 47</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 48</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>ONLY enable authentication caching if either of the following is true for your realm implementation:</b></span></pre></td></tr> |
| <tr> <td class="numLine"> 49</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 50</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>The {@link #doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken) doGetAuthenticationInfo}</span></pre></td></tr> |
| <tr> <td class="numLine"> 51</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * implementation returns {@code AuthenticationInfo} instances where the</span></pre></td></tr> |
| <tr> <td class="numLine"> 52</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.AuthenticationInfo#getCredentials() credentials} are securely obfuscated and NOT</span></pre></td></tr> |
| <tr> <td class="numLine"> 53</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * plaintext (raw) credentials. For example,</span></pre></td></tr> |
| <tr> <td class="numLine"> 54</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if your realm references accounts with passwords, that the {@code AuthenticationInfo}'s</span></pre></td></tr> |
| <tr> <td class="numLine"> 55</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.AuthenticationInfo#getCredentials() credentials} are safely hashed and salted or otherwise</span></pre></td></tr> |
| <tr> <td class="numLine"> 56</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * fully encrypted.<br/><br/></li></span></pre></td></tr> |
| <tr> <td class="numLine"> 57</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>The {@link #doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken) doGetAuthenticationInfo}</span></pre></td></tr> |
| <tr> <td class="numLine"> 58</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * implementation returns {@code AuthenticationInfo} instances where the</span></pre></td></tr> |
| <tr> <td class="numLine"> 59</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.AuthenticationInfo#getCredentials() credentials} are plaintext (raw) <b>AND</b> the</span></pre></td></tr> |
| <tr> <td class="numLine"> 60</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * cache region storing the {@code AuthenticationInfo} instances WILL NOT overflow to disk and WILL NOT transmit cache</span></pre></td></tr> |
| <tr> <td class="numLine"> 61</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * entries over an unprotected (non TLS/SSL) network (as might be the case with a networked/distributed enterprise cache).</span></pre></td></tr> |
| <tr> <td class="numLine"> 62</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This should be the case even in private/trusted/corporate networks.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 63</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 64</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 65</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * These points are very important because if authentication caching is enabled, this abstract class implementation</span></pre></td></tr> |
| <tr> <td class="numLine"> 66</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * will place AuthenticationInfo instances returned from the subclass implementations directly into the cache, for</span></pre></td></tr> |
| <tr> <td class="numLine"> 67</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * example:</span></pre></td></tr> |
| <tr> <td class="numLine"> 68</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 69</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * cache.put(cacheKey, subclassAuthenticationInfoInstance);</span></pre></td></tr> |
| <tr> <td class="numLine"> 70</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 71</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 72</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Enabling authentication caching is ONLY safe to do if the above two scenarios apply. It is NOT safe to enable under</span></pre></td></tr> |
| <tr> <td class="numLine"> 73</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * any other scenario.</span></pre></td></tr> |
| <tr> <td class="numLine"> 74</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 75</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * When possible, always represent and store credentials in a safe form (hash+salt or encrypted) to eliminate plaintext</span></pre></td></tr> |
| <tr> <td class="numLine"> 76</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * visibility.</span></pre></td></tr> |
| <tr> <td class="numLine"> 77</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h3>Authentication Cache Invalidation on Logout</h3></span></pre></td></tr> |
| <tr> <td class="numLine"> 78</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If authentication caching is enabled, this implementation will attempt to evict (remove) cached authentication data</span></pre></td></tr> |
| <tr> <td class="numLine"> 79</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for an account during logout. This can only occur if the</span></pre></td></tr> |
| <tr> <td class="numLine"> 80</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAuthenticationCacheKey(org.apache.shiro.authc.AuthenticationToken)} and</span></pre></td></tr> |
| <tr> <td class="numLine"> 81</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAuthenticationCacheKey(org.apache.shiro.subject.PrincipalCollection)} methods return the exact same value.</span></pre></td></tr> |
| <tr> <td class="numLine"> 82</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 83</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The default implementations of these methods expect that the</span></pre></td></tr> |
| <tr> <td class="numLine"> 84</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.AuthenticationToken#getPrincipal()} (what the user submits during login) and</span></pre></td></tr> |
| <tr> <td class="numLine"> 85</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAvailablePrincipal(org.apache.shiro.subject.PrincipalCollection) getAvailablePrincipal} (what is returned</span></pre></td></tr> |
| <tr> <td class="numLine"> 86</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * by the realm after account lookup) return</span></pre></td></tr> |
| <tr> <td class="numLine"> 87</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the same exact value. For example, the user submitted username is also the primary account identifier.</span></pre></td></tr> |
| <tr> <td class="numLine"> 88</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 89</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * However, if your application uses, say, a username for end-user login, but returns a primary key ID as the</span></pre></td></tr> |
| <tr> <td class="numLine"> 90</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * primary principal after authentication, then you will need to override either</span></pre></td></tr> |
| <tr> <td class="numLine"> 91</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAuthenticationCacheKey(org.apache.shiro.authc.AuthenticationToken) getAuthenticationCacheKey(token)} or</span></pre></td></tr> |
| <tr> <td class="numLine"> 92</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAuthenticationCacheKey(org.apache.shiro.subject.PrincipalCollection) getAuthenticationCacheKey(principals)}</span></pre></td></tr> |
| <tr> <td class="numLine"> 93</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (or both) to ensure that the same cache key can be used for either object.</span></pre></td></tr> |
| <tr> <td class="numLine"> 94</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 95</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This guarantees that the same cache key used to cache the data during authentication (derived from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 96</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code AuthenticationToken}) will be used to remove the cached data during logout (derived from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 97</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code PrincipalCollection}).</span></pre></td></tr> |
| <tr> <td class="numLine"> 98</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h4>Unmatching Cache Key Values</h4></span></pre></td></tr> |
| <tr> <td class="numLine"> 99</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If the return values from {@link #getAuthenticationCacheKey(org.apache.shiro.authc.AuthenticationToken)} and</span></pre></td></tr> |
| <tr> <td class="numLine"> 100</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAuthenticationCacheKey(org.apache.shiro.subject.PrincipalCollection)} are not identical, cached</span></pre></td></tr> |
| <tr> <td class="numLine"> 101</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * authentication data removal is at the mercy of your cache provider settings. For example, often cache</span></pre></td></tr> |
| <tr> <td class="numLine"> 102</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * implementations will evict cache entries based on a timeToIdle or timeToLive (TTL) value.</span></pre></td></tr> |
| <tr> <td class="numLine"> 103</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 104</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If this lazy eviction capability of the cache product is not sufficient and you want discrete behavior</span></pre></td></tr> |
| <tr> <td class="numLine"> 105</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (highly recommended for authentication data), ensure that the return values from those two methods are identical in</span></pre></td></tr> |
| <tr> <td class="numLine"> 106</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the subclass implementation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 107</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 108</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 109</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 110</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> AuthenticatingRealm <span class="keyword">extends</span> CachingRealm <span class="keyword">implements</span> Initializable {</pre></td></tr> |
| <tr> <td class="numLine"> 111</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 112</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//TODO - complete JavaDoc</span></pre></td></tr> |
| <tr> <td class="numLine"> 113</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 114</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Logger log = LoggerFactory.getLogger(AuthenticatingRealm.<span class="keyword">class</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 115</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 116</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AtomicInteger INSTANCE_COUNT = <span class="keyword">new</span> AtomicInteger();</pre></td></tr> |
| <tr> <td class="numLine"> 117</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 118</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 119</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The default suffix appended to the realm name used for caching authentication data.</span></pre></td></tr> |
| <tr> <td class="numLine"> 120</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 121</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 122</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 123</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String DEFAULT_AUTHORIZATION_CACHE_SUFFIX = <span class="string">".authenticationCache"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 124</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 125</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 126</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Credentials matcher used to determine if the provided credentials match the credentials stored in the data store.</span></pre></td></tr> |
| <tr> <td class="numLine"> 127</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 128</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> CredentialsMatcher credentialsMatcher;</pre></td></tr> |
| <tr> <td class="numLine"> 129</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 130</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 131</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Cache<Object, AuthenticationInfo> authenticationCache;</pre></td></tr> |
| <tr> <td class="numLine"> 132</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 133</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> authenticationCachingEnabled;</pre></td></tr> |
| <tr> <td class="numLine"> 134</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String authenticationCacheName;</pre></td></tr> |
| <tr> <td class="numLine"> 135</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 136</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 137</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The class that this realm supports for authentication tokens. This is used by the</span></pre></td></tr> |
| <tr> <td class="numLine"> 138</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * default implementation of the {@link Realm#supports(org.apache.shiro.authc.AuthenticationToken)} method to</span></pre></td></tr> |
| <tr> <td class="numLine"> 139</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * determine whether or not the given authentication token is supported by this realm.</span></pre></td></tr> |
| <tr> <td class="numLine"> 140</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 141</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Class<? <span class="keyword">extends</span> AuthenticationToken> authenticationTokenClass;</pre></td></tr> |
| <tr> <td class="numLine"> 142</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 143</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*-------------------------------------------</span></pre></td></tr> |
| <tr> <td class="numLine"> 144</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> | C O N S T R U C T O R S |</span></pre></td></tr> |
| <tr> <td class="numLine"> 145</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> ============================================*/</span></pre></td></tr> |
| <tr> <td class="numLine"> 146</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> AuthenticatingRealm() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 147</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(<span class="keyword">null</span>, <span class="keyword">new</span> SimpleCredentialsMatcher());</pre></td></tr> |
| <tr> <td class="numLineCover"> 148</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 149</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 150</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> AuthenticatingRealm(CacheManager cacheManager) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 151</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(cacheManager, <span class="keyword">new</span> SimpleCredentialsMatcher());</pre></td></tr> |
| <tr> <td class="numLineCover"> 152</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 153</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 154</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> AuthenticatingRealm(CredentialsMatcher matcher) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(<span class="keyword">null</span>, matcher);</pre></td></tr> |
| <tr> <td class="numLineCover"> 156</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 157</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> <span class="keyword">public</span> AuthenticatingRealm(CacheManager cacheManager, CredentialsMatcher matcher) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 159</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> authenticationTokenClass = UsernamePasswordToken.<span class="keyword">class</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 160</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 161</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//retain backwards compatibility for Shiro 1.1 and earlier. Setting to true by default will probably cause</span></pre></td></tr> |
| <tr> <td class="numLine"> 162</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//unexpected results for existing applications:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 163</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCachingEnabled = <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 164</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 165</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> <span class="keyword">int</span> instanceNumber = INSTANCE_COUNT.getAndIncrement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 166</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCacheName = getClass().getName() + DEFAULT_AUTHORIZATION_CACHE_SUFFIX;</pre></td></tr> |
| <tr> <td class="numLineCover"> 167</td> <td class="nbHitsCovered"><a title="Line 167: Conditional coverage 100% (2/2)."> 82</a></td> <td class="src"><pre class="src"> <a title="Line 167: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (instanceNumber > 0) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 168</td> <td class="nbHitsCovered"> 81</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCacheName = <span class="keyword">this</span>.authenticationCacheName + <span class="string">"."</span> + instanceNumber;</pre></td></tr> |
| <tr> <td class="numLine"> 169</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 170</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 171</td> <td class="nbHitsCovered"><a title="Line 171: Conditional coverage 100% (2/2)."> 82</a></td> <td class="src"><pre class="src"> <a title="Line 171: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cacheManager != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> setCacheManager(cacheManager);</pre></td></tr> |
| <tr> <td class="numLine"> 173</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 174</td> <td class="nbHitsUncovered"><a title="Line 174: Conditional coverage 50% (1/2)."> 82</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 174: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (matcher != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 175</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> setCredentialsMatcher(matcher);</pre></td></tr> |
| <tr> <td class="numLine"> 176</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 82</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 178</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 179</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*--------------------------------------------</span></pre></td></tr> |
| <tr> <td class="numLine"> 180</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> | A C C E S S O R S / M O D I F I E R S |</span></pre></td></tr> |
| <tr> <td class="numLine"> 181</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> ============================================*/</span></pre></td></tr> |
| <tr> <td class="numLine"> 182</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 183</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 184</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the <code>CredentialsMatcher</code> used during an authentication attempt to verify submitted</span></pre></td></tr> |
| <tr> <td class="numLine"> 185</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * credentials with those stored in the system.</span></pre></td></tr> |
| <tr> <td class="numLine"> 186</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 187</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p>Unless overridden by the {@link #setCredentialsMatcher setCredentialsMatcher} method, the default</span></pre></td></tr> |
| <tr> <td class="numLine"> 188</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * value is a {@link org.apache.shiro.authc.credential.SimpleCredentialsMatcher SimpleCredentialsMatcher} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 189</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 190</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the <code>CredentialsMatcher</code> used during an authentication attempt to verify submitted</span></pre></td></tr> |
| <tr> <td class="numLine"> 191</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * credentials with those stored in the system.</span></pre></td></tr> |
| <tr> <td class="numLine"> 192</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 193</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> CredentialsMatcher getCredentialsMatcher() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">return</span> credentialsMatcher;</pre></td></tr> |
| <tr> <td class="numLine"> 195</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 196</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 197</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 198</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Sets the CrendialsMatcher used during an authentication attempt to verify submitted credentials with those</span></pre></td></tr> |
| <tr> <td class="numLine"> 199</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * stored in the system. The implementation of this matcher can be switched via configuration to</span></pre></td></tr> |
| <tr> <td class="numLine"> 200</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * support any number of schemes, including plain text comparisons, hashing comparisons, and others.</span></pre></td></tr> |
| <tr> <td class="numLine"> 201</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 202</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p>Unless overridden by this method, the default value is a</span></pre></td></tr> |
| <tr> <td class="numLine"> 203</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.credential.SimpleCredentialsMatcher} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 204</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 205</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param credentialsMatcher the matcher to use.</span></pre></td></tr> |
| <tr> <td class="numLine"> 206</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 207</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setCredentialsMatcher(CredentialsMatcher credentialsMatcher) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 116</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.credentialsMatcher = credentialsMatcher;</pre></td></tr> |
| <tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 116</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 210</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 211</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 212</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the authenticationToken class supported by this realm.</span></pre></td></tr> |
| <tr> <td class="numLine"> 213</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 214</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p>The default value is <tt>{@link org.apache.shiro.authc.UsernamePasswordToken UsernamePasswordToken.class}</tt>, since</span></pre></td></tr> |
| <tr> <td class="numLine"> 215</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * about 90% of realms use username/password authentication, regardless of their protocol (e.g. over jdbc, ldap,</span></pre></td></tr> |
| <tr> <td class="numLine"> 216</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * kerberos, http, etc).</span></pre></td></tr> |
| <tr> <td class="numLine"> 217</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 218</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p>If subclasses haven't already overridden the {@link Realm#supports Realm.supports(AuthenticationToken)} method,</span></pre></td></tr> |
| <tr> <td class="numLine"> 219</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * they must {@link #setAuthenticationTokenClass(Class) set a new class} if they won't support</span></pre></td></tr> |
| <tr> <td class="numLine"> 220</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <tt>UsernamePasswordToken</tt> authentication token submissions.</span></pre></td></tr> |
| <tr> <td class="numLine"> 221</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 222</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the authenticationToken class supported by this realm.</span></pre></td></tr> |
| <tr> <td class="numLine"> 223</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #setAuthenticationTokenClass</span></pre></td></tr> |
| <tr> <td class="numLine"> 224</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 225</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Class getAuthenticationTokenClass() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 226</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> <span class="keyword">return</span> authenticationTokenClass;</pre></td></tr> |
| <tr> <td class="numLine"> 227</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 228</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 229</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 230</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Sets the authenticationToken class supported by this realm.</span></pre></td></tr> |
| <tr> <td class="numLine"> 231</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 232</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p>Unless overridden by this method, the default value is</span></pre></td></tr> |
| <tr> <td class="numLine"> 233</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.UsernamePasswordToken UsernamePasswordToken.class} to support the majority of applications.</span></pre></td></tr> |
| <tr> <td class="numLine"> 234</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 235</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param authenticationTokenClass the class of authentication token instances supported by this realm.</span></pre></td></tr> |
| <tr> <td class="numLine"> 236</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getAuthenticationTokenClass getAuthenticationTokenClass() for more explanation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 237</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 238</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setAuthenticationTokenClass(Class<? <span class="keyword">extends</span> AuthenticationToken> authenticationTokenClass) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationTokenClass = authenticationTokenClass;</pre></td></tr> |
| <tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 241</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 242</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 243</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Sets an explicit {@link Cache} instance to use for authentication caching. If not set and authentication</span></pre></td></tr> |
| <tr> <td class="numLine"> 244</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * caching is {@link #isAuthenticationCachingEnabled() enabled}, any available</span></pre></td></tr> |
| <tr> <td class="numLine"> 245</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getCacheManager() cacheManager} will be used to acquire the cache instance if available.</span></pre></td></tr> |
| <tr> <td class="numLine"> 246</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 247</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>WARNING:</b> Only set this property if safe caching conditions apply, as documented at the top</span></pre></td></tr> |
| <tr> <td class="numLine"> 248</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of this page in the class-level JavaDoc.</span></pre></td></tr> |
| <tr> <td class="numLine"> 249</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 250</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param authenticationCache an explicit {@link Cache} instance to use for authentication caching or</span></pre></td></tr> |
| <tr> <td class="numLine"> 251</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code null} if the cache should possibly be obtained another way.</span></pre></td></tr> |
| <tr> <td class="numLine"> 252</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #isAuthenticationCachingEnabled()</span></pre></td></tr> |
| <tr> <td class="numLine"> 253</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 254</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 255</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setAuthenticationCache(Cache<Object, AuthenticationInfo> authenticationCache) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCache = authenticationCache;</pre></td></tr> |
| <tr> <td class="numLineCover"> 257</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 258</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 259</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 260</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns a {@link Cache} instance to use for authentication caching, or {@code null} if no cache has been</span></pre></td></tr> |
| <tr> <td class="numLine"> 261</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * set.</span></pre></td></tr> |
| <tr> <td class="numLine"> 262</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 263</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a {@link Cache} instance to use for authentication caching, or {@code null} if no cache has been</span></pre></td></tr> |
| <tr> <td class="numLine"> 264</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * set.</span></pre></td></tr> |
| <tr> <td class="numLine"> 265</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #setAuthenticationCache(org.apache.shiro.cache.Cache)</span></pre></td></tr> |
| <tr> <td class="numLine"> 266</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #isAuthenticationCachingEnabled()</span></pre></td></tr> |
| <tr> <td class="numLine"> 267</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 268</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 269</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Cache<Object, AuthenticationInfo> getAuthenticationCache() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 270</td> <td class="nbHitsCovered"> 75</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.authenticationCache;</pre></td></tr> |
| <tr> <td class="numLine"> 271</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 272</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 273</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 274</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the name of a {@link Cache} to lookup from any available {@link #getCacheManager() cacheManager} if</span></pre></td></tr> |
| <tr> <td class="numLine"> 275</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * a cache is not explicitly configured via {@link #setAuthenticationCache(org.apache.shiro.cache.Cache)}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 276</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 277</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This name will only be used to look up a cache if authentication caching is</span></pre></td></tr> |
| <tr> <td class="numLine"> 278</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #isAuthenticationCachingEnabled() enabled}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 279</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 280</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>WARNING:</b> Only set this property if safe caching conditions apply, as documented at the top</span></pre></td></tr> |
| <tr> <td class="numLine"> 281</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of this page in the class-level JavaDoc.</span></pre></td></tr> |
| <tr> <td class="numLine"> 282</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 283</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the name of a {@link Cache} to lookup from any available {@link #getCacheManager() cacheManager} if</span></pre></td></tr> |
| <tr> <td class="numLine"> 284</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * a cache is not explicitly configured via {@link #setAuthenticationCache(org.apache.shiro.cache.Cache)}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 285</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #isAuthenticationCachingEnabled()</span></pre></td></tr> |
| <tr> <td class="numLine"> 286</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 287</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 288</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getAuthenticationCacheName() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 289</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.authenticationCacheName;</pre></td></tr> |
| <tr> <td class="numLine"> 290</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 291</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 292</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 293</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Sets the name of a {@link Cache} to lookup from any available {@link #getCacheManager() cacheManager} if</span></pre></td></tr> |
| <tr> <td class="numLine"> 294</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * a cache is not explicitly configured via {@link #setAuthenticationCache(org.apache.shiro.cache.Cache)}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 295</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 296</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This name will only be used to look up a cache if authentication caching is</span></pre></td></tr> |
| <tr> <td class="numLine"> 297</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #isAuthenticationCachingEnabled() enabled}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 298</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 299</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param authenticationCacheName the name of a {@link Cache} to lookup from any available</span></pre></td></tr> |
| <tr> <td class="numLine"> 300</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getCacheManager() cacheManager} if a cache is not explicitly configured</span></pre></td></tr> |
| <tr> <td class="numLine"> 301</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * via {@link #setAuthenticationCache(org.apache.shiro.cache.Cache)}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 302</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #isAuthenticationCachingEnabled()</span></pre></td></tr> |
| <tr> <td class="numLine"> 303</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 304</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 305</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setAuthenticationCacheName(String authenticationCacheName) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCacheName = authenticationCacheName;</pre></td></tr> |
| <tr> <td class="numLineCover"> 307</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 308</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 309</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 310</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if authentication caching should be utilized if a {@link CacheManager} has been</span></pre></td></tr> |
| <tr> <td class="numLine"> 311</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #setCacheManager(org.apache.shiro.cache.CacheManager) configured}, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 312</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 313</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The default value is {@code true}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 314</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 315</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return {@code true} if authentication caching should be utilized, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 316</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 317</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> isAuthenticationCachingEnabled() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 318</td> <td class="nbHitsUncovered"><a title="Line 318: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 100</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 318: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">return</span> <span class="keyword">this</span>.authenticationCachingEnabled && isCachingEnabled();</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 319</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 320</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 321</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 322</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Sets whether or not authentication caching should be utilized if a {@link CacheManager} has been</span></pre></td></tr> |
| <tr> <td class="numLine"> 323</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #setCacheManager(org.apache.shiro.cache.CacheManager) configured}, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 324</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 325</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The default value is {@code false} to retain backwards compatibility with Shiro 1.1 and earlier.</span></pre></td></tr> |
| <tr> <td class="numLine"> 326</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 327</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>WARNING:</b> Only set this property to {@code true} if safe caching conditions apply, as documented at the top</span></pre></td></tr> |
| <tr> <td class="numLine"> 328</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of this page in the class-level JavaDoc.</span></pre></td></tr> |
| <tr> <td class="numLine"> 329</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 330</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param authenticationCachingEnabled the value to set</span></pre></td></tr> |
| <tr> <td class="numLine"> 331</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 332</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> @SuppressWarnings({<span class="string">"UnusedDeclaration"</span>})</pre></td></tr> |
| <tr> <td class="numLine"> 333</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setAuthenticationCachingEnabled(<span class="keyword">boolean</span> authenticationCachingEnabled) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCachingEnabled = authenticationCachingEnabled;</pre></td></tr> |
| <tr> <td class="numLineCover"> 335</td> <td class="nbHitsUncovered"><a title="Line 335: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 335: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (authenticationCachingEnabled) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> setCachingEnabled(<span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 337</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 339</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 340</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setName(String name) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> <span class="keyword">super</span>.setName(name);</pre></td></tr> |
| <tr> <td class="numLineCover"> 342</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> String authcCacheName = <span class="keyword">this</span>.authenticationCacheName;</pre></td></tr> |
| <tr> <td class="numLineCover"> 343</td> <td class="nbHitsUncovered"><a title="Line 343: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 23</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 343: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (authcCacheName != <span class="keyword">null</span> && authcCacheName.startsWith(getClass().getName())) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 344</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//get rid of the default heuristically-created cache name. Create a more meaningful one</span></pre></td></tr> |
| <tr> <td class="numLine"> 345</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//based on the application-unique Realm name:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCacheName = name + DEFAULT_AUTHORIZATION_CACHE_SUFFIX;</pre></td></tr> |
| <tr> <td class="numLine"> 347</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 349</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 350</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 351</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*--------------------------------------------</span></pre></td></tr> |
| <tr> <td class="numLine"> 352</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> | M E T H O D S |</span></pre></td></tr> |
| <tr> <td class="numLine"> 353</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> ============================================*/</span></pre></td></tr> |
| <tr> <td class="numLine"> 354</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 355</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 356</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Convenience implementation that returns</span></pre></td></tr> |
| <tr> <td class="numLine"> 357</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <tt>getAuthenticationTokenClass().isAssignableFrom( token.getClass() );</tt>. Can be overridden</span></pre></td></tr> |
| <tr> <td class="numLine"> 358</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * by subclasses for more complex token checking.</span></pre></td></tr> |
| <tr> <td class="numLine"> 359</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p>Most configurations will only need to set a different class via</span></pre></td></tr> |
| <tr> <td class="numLine"> 360</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #setAuthenticationTokenClass}, as opposed to overriding this method.</span></pre></td></tr> |
| <tr> <td class="numLine"> 361</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 362</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the token being submitted for authentication.</span></pre></td></tr> |
| <tr> <td class="numLine"> 363</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if this authentication realm can process the submitted token instance of the class, false otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 364</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 365</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> supports(AuthenticationToken token) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 366</td> <td class="nbHitsUncovered"><a title="Line 366: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 23</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 366: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">return</span> token != <span class="keyword">null</span> && getAuthenticationTokenClass().isAssignableFrom(token.getClass());</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 367</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 368</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 369</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 370</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Initializes this realm and potentially enables an authentication cache, depending on configuration. Based on</span></pre></td></tr> |
| <tr> <td class="numLine"> 371</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the availability of an authentication cache, this class functions as follows:</span></pre></td></tr> |
| <tr> <td class="numLine"> 372</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 373</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If the {@link #setAuthenticationCache cache} property has been set, it will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 374</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * used to cache the AuthenticationInfo objects returned from {@link #getAuthenticationInfo}</span></pre></td></tr> |
| <tr> <td class="numLine"> 375</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * method invocations.</span></pre></td></tr> |
| <tr> <td class="numLine"> 376</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * All future calls to {@link #getAuthenticationInfo} will attempt to use this cache first</span></pre></td></tr> |
| <tr> <td class="numLine"> 377</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to alleviate any potentially unnecessary calls to an underlying data store.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 378</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If the {@link #setAuthenticationCache cache} property has <b>not</b> been set,</span></pre></td></tr> |
| <tr> <td class="numLine"> 379</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the {@link #setCacheManager cacheManager} property will be checked.</span></pre></td></tr> |
| <tr> <td class="numLine"> 380</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If a {@code cacheManager} has been set, it will be used to eagerly acquire an authentication</span></pre></td></tr> |
| <tr> <td class="numLine"> 381</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code cache}, and this cache which will be used as specified in #1.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 382</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If neither the {@link #setAuthenticationCache (org.apache.shiro.cache.Cache) authenticationCache}</span></pre></td></tr> |
| <tr> <td class="numLine"> 383</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * or {@link #setCacheManager(org.apache.shiro.cache.CacheManager) cacheManager}</span></pre></td></tr> |
| <tr> <td class="numLine"> 384</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * properties are set, caching will not be utilized and authentication look-ups will be delegated to</span></pre></td></tr> |
| <tr> <td class="numLine"> 385</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * subclass implementations for each authentication attempt.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 386</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 387</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 388</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This method finishes by calling {@link #onInit()} is to allow subclasses to perform any init behavior desired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 389</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 390</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 391</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 392</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">void</span> init() {</pre></td></tr> |
| <tr> <td class="numLine"> 393</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//trigger obtaining the authorization cache if possible</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 394</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> getAvailableAuthenticationCache();</pre></td></tr> |
| <tr> <td class="numLineCover"> 395</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> onInit();</pre></td></tr> |
| <tr> <td class="numLineCover"> 396</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 397</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 398</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 399</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Template method for subclasses to implement any initialization logic. Called from</span></pre></td></tr> |
| <tr> <td class="numLine"> 400</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #init()}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 401</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 402</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 403</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 404</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">void</span> onInit() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 405</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 406</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 407</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 408</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implementation attempts to acquire an authentication cache if one is not already configured.</span></pre></td></tr> |
| <tr> <td class="numLine"> 409</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 410</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 411</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 412</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">void</span> afterCacheManagerSet() {</pre></td></tr> |
| <tr> <td class="numLine"> 413</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//trigger obtaining the authorization cache if possible</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 414</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> getAvailableAuthenticationCache();</pre></td></tr> |
| <tr> <td class="numLineCover"> 415</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 416</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 417</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 418</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns any available {@link Cache} instance to use for authentication caching. This functions as follows:</span></pre></td></tr> |
| <tr> <td class="numLine"> 419</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 420</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If an {@link #setAuthenticationCache(org.apache.shiro.cache.Cache) authenticationCache} has been explicitly</span></pre></td></tr> |
| <tr> <td class="numLine"> 421</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * configured (it is not null), it is returned.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 422</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If there is no {@link #getAuthenticationCache() authenticationCache} configured:</span></pre></td></tr> |
| <tr> <td class="numLine"> 423</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 424</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If authentication caching is {@link #isAuthenticationCachingEnabled() enabled}, any available</span></pre></td></tr> |
| <tr> <td class="numLine"> 425</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getCacheManager() cacheManager} will be consulted to obtain an available authentication cache.</span></pre></td></tr> |
| <tr> <td class="numLine"> 426</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </li></span></pre></td></tr> |
| <tr> <td class="numLine"> 427</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If authentication caching is disabled, this implementation does nothing.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 428</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 429</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </li></span></pre></td></tr> |
| <tr> <td class="numLine"> 430</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 431</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 432</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return any available {@link Cache} instance to use for authentication caching.</span></pre></td></tr> |
| <tr> <td class="numLine"> 433</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 434</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Cache<Object, AuthenticationInfo> getAvailableAuthenticationCache() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 435</td> <td class="nbHitsCovered"> 74</td> <td class="src"><pre class="src"> Cache<Object, AuthenticationInfo> cache = getAuthenticationCache();</pre></td></tr> |
| <tr> <td class="numLineCover"> 436</td> <td class="nbHitsCovered"> 74</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> authcCachingEnabled = isAuthenticationCachingEnabled();</pre></td></tr> |
| <tr> <td class="numLineCover"> 437</td> <td class="nbHitsCovered"><a title="Line 437: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 74</a></td> <td class="src"><pre class="src"> <a title="Line 437: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (cache == <span class="keyword">null</span> && authcCachingEnabled) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 438</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> cache = getAuthenticationCacheLazy();</pre></td></tr> |
| <tr> <td class="numLine"> 439</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 440</td> <td class="nbHitsCovered"> 74</td> <td class="src"><pre class="src"> <span class="keyword">return</span> cache;</pre></td></tr> |
| <tr> <td class="numLine"> 441</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 442</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 443</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 444</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Checks to see if the authenticationCache class attribute is null, and if so, attempts to acquire one from</span></pre></td></tr> |
| <tr> <td class="numLine"> 445</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * any configured {@link #getCacheManager() cacheManager}. If one is acquired, it is set as the class attribute.</span></pre></td></tr> |
| <tr> <td class="numLine"> 446</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The class attribute is then returned.</span></pre></td></tr> |
| <tr> <td class="numLine"> 447</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 448</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an available cache instance to be used for authentication caching or {@code null} if one is not available.</span></pre></td></tr> |
| <tr> <td class="numLine"> 449</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 450</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 451</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Cache<Object, AuthenticationInfo> getAuthenticationCacheLazy() {</pre></td></tr> |
| <tr> <td class="numLine"> 452</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 453</td> <td class="nbHitsUncovered"><a title="Line 453: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 453: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.authenticationCache == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 454</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 455</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> log.trace(<span class="string">"No authenticationCache instance set. Checking for a cacheManager..."</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 456</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> CacheManager cacheManager = getCacheManager();</pre></td></tr> |
| <tr> <td class="numLine"> 458</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 459</td> <td class="nbHitsUncovered"><a title="Line 459: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 459: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (cacheManager != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 460</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> String cacheName = getAuthenticationCacheName();</pre></td></tr> |
| <tr> <td class="numLineCover"> 461</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> log.debug(<span class="string">"CacheManager [{}] configured. Building authentication cache '{}'"</span>, cacheManager, cacheName);</pre></td></tr> |
| <tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.authenticationCache = cacheManager.getCache(cacheName);</pre></td></tr> |
| <tr> <td class="numLine"> 463</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 464</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 465</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 466</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.authenticationCache;</pre></td></tr> |
| <tr> <td class="numLine"> 467</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 468</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 469</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 470</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns any cached AuthenticationInfo corresponding to the specified token or {@code null} if there currently</span></pre></td></tr> |
| <tr> <td class="numLine"> 471</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * isn't any cached data.</span></pre></td></tr> |
| <tr> <td class="numLine"> 472</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 473</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the token submitted during the authentication attempt.</span></pre></td></tr> |
| <tr> <td class="numLine"> 474</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return any cached AuthenticationInfo corresponding to the specified token or {@code null} if there currently</span></pre></td></tr> |
| <tr> <td class="numLine"> 475</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * isn't any cached data.</span></pre></td></tr> |
| <tr> <td class="numLine"> 476</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 477</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 478</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> AuthenticationInfo getCachedAuthenticationInfo(AuthenticationToken token) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 479</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> AuthenticationInfo info = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 480</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 481</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> Cache<Object, AuthenticationInfo> cache = getAvailableAuthenticationCache();</pre></td></tr> |
| <tr> <td class="numLineCover"> 482</td> <td class="nbHitsUncovered"><a title="Line 482: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 32</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 482: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cache != <span class="keyword">null</span> && token != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 483</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> log.trace(<span class="string">"Attempting to retrieve the AuthenticationInfo from cache."</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 484</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> Object key = getAuthenticationCacheKey(token);</pre></td></tr> |
| <tr> <td class="numLineCover"> 485</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> info = cache.get(key);</pre></td></tr> |
| <tr> <td class="numLineCover"> 486</td> <td class="nbHitsCovered"><a title="Line 486: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 486: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (info == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 487</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.trace(<span class="string">"No AuthorizationInfo found in cache for key [{}]"</span>, key);</pre></td></tr> |
| <tr> <td class="numLine"> 488</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.trace(<span class="string">"Found cached AuthorizationInfo for key [{}]"</span>, key);</pre></td></tr> |
| <tr> <td class="numLine"> 490</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 491</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 492</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 493</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">return</span> info;</pre></td></tr> |
| <tr> <td class="numLine"> 494</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 495</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 496</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 497</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Caches the specified info if authentication caching</span></pre></td></tr> |
| <tr> <td class="numLine"> 498</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #isAuthenticationCachingEnabled(org.apache.shiro.authc.AuthenticationToken, org.apache.shiro.authc.AuthenticationInfo) isEnabled}</span></pre></td></tr> |
| <tr> <td class="numLine"> 499</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for the specific token/info pair and a cache instance is available to be used.</span></pre></td></tr> |
| <tr> <td class="numLine"> 500</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 501</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the authentication token submitted which resulted in a successful authentication attempt.</span></pre></td></tr> |
| <tr> <td class="numLine"> 502</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param info the AuthenticationInfo to cache as a result of the successful authentication attempt.</span></pre></td></tr> |
| <tr> <td class="numLine"> 503</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 504</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 505</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> cacheAuthenticationInfoIfPossible(AuthenticationToken token, AuthenticationInfo info) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 506</td> <td class="nbHitsCovered"><a title="Line 506: Conditional coverage 100% (2/2)."> 26</a></td> <td class="src"><pre class="src"> <a title="Line 506: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!isAuthenticationCachingEnabled(token, info)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 507</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> log.debug(<span class="string">"AuthenticationInfo caching is disabled for info [{}]. Submitted token: [{}]."</span>, info, token);</pre></td></tr> |
| <tr> <td class="numLine"> 508</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//return quietly, caching is disabled for this token/info pair:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 509</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> <span class="keyword">return</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 510</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 511</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 512</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Cache<Object, AuthenticationInfo> cache = getAvailableAuthenticationCache();</pre></td></tr> |
| <tr> <td class="numLineCover"> 513</td> <td class="nbHitsUncovered"><a title="Line 513: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 513: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (cache != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 514</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Object key = getAuthenticationCacheKey(token);</pre></td></tr> |
| <tr> <td class="numLineCover"> 515</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> cache.put(key, info);</pre></td></tr> |
| <tr> <td class="numLineCover"> 516</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.trace(<span class="string">"Cached AuthenticationInfo for continued authentication. key=[{}], value=[{}]."</span>, key, info);</pre></td></tr> |
| <tr> <td class="numLine"> 517</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 518</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 519</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 520</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 521</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if authentication caching should be utilized based on the specified</span></pre></td></tr> |
| <tr> <td class="numLine"> 522</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link AuthenticationToken} and/or {@link AuthenticationInfo}, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 523</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 524</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The default implementation simply delegates to {@link #isAuthenticationCachingEnabled()}, the general-case</span></pre></td></tr> |
| <tr> <td class="numLine"> 525</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * authentication caching setting. Subclasses can override this to turn on or off caching at runtime</span></pre></td></tr> |
| <tr> <td class="numLine"> 526</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * based on the specific submitted runtime values.</span></pre></td></tr> |
| <tr> <td class="numLine"> 527</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 528</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the submitted authentication token</span></pre></td></tr> |
| <tr> <td class="numLine"> 529</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param info the {@code AuthenticationInfo} acquired from data source lookup via</span></pre></td></tr> |
| <tr> <td class="numLine"> 530</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)}</span></pre></td></tr> |
| <tr> <td class="numLine"> 531</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return {@code true} if authentication caching should be utilized based on the specified</span></pre></td></tr> |
| <tr> <td class="numLine"> 532</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link AuthenticationToken} and/or {@link AuthenticationInfo}, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 533</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 534</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 535</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">boolean</span> isAuthenticationCachingEnabled(AuthenticationToken token, AuthenticationInfo info) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 536</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> <span class="keyword">return</span> isAuthenticationCachingEnabled();</pre></td></tr> |
| <tr> <td class="numLine"> 537</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 538</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 539</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 540</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implementation functions as follows:</span></pre></td></tr> |
| <tr> <td class="numLine"> 541</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 542</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>It attempts to acquire any cached {@link AuthenticationInfo} corresponding to the specified</span></pre></td></tr> |
| <tr> <td class="numLine"> 543</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link AuthenticationToken} argument. If a cached value is found, it will be used for credentials matching,</span></pre></td></tr> |
| <tr> <td class="numLine"> 544</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * alleviating the need to perform any lookups with a data source.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 545</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If there is no cached {@link AuthenticationInfo} found, delegate to the</span></pre></td></tr> |
| <tr> <td class="numLine"> 546</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)} method to perform the actual</span></pre></td></tr> |
| <tr> <td class="numLine"> 547</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * lookup. If authentication caching is enabled and possible, any returned info object will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 548</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #cacheAuthenticationInfoIfPossible(org.apache.shiro.authc.AuthenticationToken, org.apache.shiro.authc.AuthenticationInfo) cached}</span></pre></td></tr> |
| <tr> <td class="numLine"> 549</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to be used in future authentication attempts.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 550</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If an AuthenticationInfo instance is not found in the cache or by lookup, {@code null} is returned to</span></pre></td></tr> |
| <tr> <td class="numLine"> 551</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * indicate an account cannot be found.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 552</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If an AuthenticationInfo instance is found (either cached or via lookup), ensure the submitted</span></pre></td></tr> |
| <tr> <td class="numLine"> 553</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * AuthenticationToken's credentials match the expected {@code AuthenticationInfo}'s credentials using the</span></pre></td></tr> |
| <tr> <td class="numLine"> 554</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getCredentialsMatcher() credentialsMatcher}. This means that credentials are always verified</span></pre></td></tr> |
| <tr> <td class="numLine"> 555</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for an authentication attempt.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 556</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 557</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 558</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the submitted account principal and credentials.</span></pre></td></tr> |
| <tr> <td class="numLine"> 559</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the AuthenticationInfo corresponding to the given {@code token}, or {@code null} if no</span></pre></td></tr> |
| <tr> <td class="numLine"> 560</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * AuthenticationInfo could be found.</span></pre></td></tr> |
| <tr> <td class="numLine"> 561</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws AuthenticationException if authentication failed.</span></pre></td></tr> |
| <tr> <td class="numLine"> 562</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 563</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">final</span> AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) <span class="keyword">throws</span> AuthenticationException {</pre></td></tr> |
| <tr> <td class="numLine"> 564</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 565</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> AuthenticationInfo info = getCachedAuthenticationInfo(token);</pre></td></tr> |
| <tr> <td class="numLineCover"> 566</td> <td class="nbHitsCovered"><a title="Line 566: Conditional coverage 100% (2/2)."> 32</a></td> <td class="src"><pre class="src"> <a title="Line 566: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (info == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 567</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//otherwise not cached, perform the lookup:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 568</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> info = doGetAuthenticationInfo(token);</pre></td></tr> |
| <tr> <td class="numLineCover"> 569</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> log.debug(<span class="string">"Looked up AuthenticationInfo [{}] from doGetAuthenticationInfo"</span>, info);</pre></td></tr> |
| <tr> <td class="numLineCover"> 570</td> <td class="nbHitsUncovered"><a title="Line 570: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 27</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 570: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (token != <span class="keyword">null</span> && info != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 571</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> cacheAuthenticationInfoIfPossible(token, info);</pre></td></tr> |
| <tr> <td class="numLine"> 572</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 573</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 574</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> log.debug(<span class="string">"Using cached authentication info [{}] to perform credentials matching."</span>, info);</pre></td></tr> |
| <tr> <td class="numLine"> 575</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 576</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 577</td> <td class="nbHitsCovered"><a title="Line 577: Conditional coverage 100% (2/2)."> 29</a></td> <td class="src"><pre class="src"> <a title="Line 577: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (info != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 578</td> <td class="nbHitsCovered"> 28</td> <td class="src"><pre class="src"> assertCredentialsMatch(token, info);</pre></td></tr> |
| <tr> <td class="numLine"> 579</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 580</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> log.debug(<span class="string">"No AuthenticationInfo found for submitted AuthenticationToken [{}]. Returning null."</span>, token);</pre></td></tr> |
| <tr> <td class="numLine"> 581</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 582</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 583</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> <span class="keyword">return</span> info;</pre></td></tr> |
| <tr> <td class="numLine"> 584</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 585</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 586</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 587</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Asserts that the submitted {@code AuthenticationToken}'s credentials match the stored account</span></pre></td></tr> |
| <tr> <td class="numLine"> 588</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code AuthenticationInfo}'s credentials, and if not, throws an {@link AuthenticationException}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 589</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 590</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the submitted authentication token</span></pre></td></tr> |
| <tr> <td class="numLine"> 591</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param info the AuthenticationInfo corresponding to the given {@code token}</span></pre></td></tr> |
| <tr> <td class="numLine"> 592</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws AuthenticationException if the token's credentials do not match the stored account credentials.</span></pre></td></tr> |
| <tr> <td class="numLine"> 593</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 594</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">void</span> assertCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) <span class="keyword">throws</span> AuthenticationException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 595</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> CredentialsMatcher cm = getCredentialsMatcher();</pre></td></tr> |
| <tr> <td class="numLineCover"> 596</td> <td class="nbHitsCovered"><a title="Line 596: Conditional coverage 100% (2/2)."> 30</a></td> <td class="src"><pre class="src"> <a title="Line 596: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cm != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 597</td> <td class="nbHitsCovered"><a title="Line 597: Conditional coverage 100% (2/2)."> 29</a></td> <td class="src"><pre class="src"> <a title="Line 597: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!cm.doCredentialsMatch(token, info)) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 598</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//not successful - throw an exception to indicate this:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 599</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> String msg = <span class="string">"Submitted credentials for token ["</span> + token + <span class="string">"] did not match the expected credentials."</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 600</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IncorrectCredentialsException(msg);</pre></td></tr> |
| <tr> <td class="numLine"> 601</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 602</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 603</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> AuthenticationException(<span class="string">"A CredentialsMatcher must be configured in order to verify "</span> +</pre></td></tr> |
| <tr> <td class="numLine"> 604</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="string">"credentials during authentication. If you do not wish for credentials to be examined, you "</span> +</pre></td></tr> |
| <tr> <td class="numLine"> 605</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="string">"can configure an "</span> + AllowAllCredentialsMatcher.<span class="keyword">class</span>.getName() + <span class="string">" instance."</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 606</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 607</td> <td class="nbHitsCovered"> 25</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 608</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 609</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 610</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the key under which {@link AuthenticationInfo} instances are cached if authentication caching is enabled.</span></pre></td></tr> |
| <tr> <td class="numLine"> 611</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implementation defaults to returning the token's</span></pre></td></tr> |
| <tr> <td class="numLine"> 612</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authc.AuthenticationToken#getPrincipal() principal}, which is usually a username in</span></pre></td></tr> |
| <tr> <td class="numLine"> 613</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * most applications.</span></pre></td></tr> |
| <tr> <td class="numLine"> 614</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h3>Cache Invalidation on Logout</h3></span></pre></td></tr> |
| <tr> <td class="numLine"> 615</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>NOTE:</b> If you want to be able to invalidate an account's cached {@code AuthenticationInfo} on logout, you</span></pre></td></tr> |
| <tr> <td class="numLine"> 616</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * must ensure the {@link #getAuthenticationCacheKey(org.apache.shiro.subject.PrincipalCollection)} method returns</span></pre></td></tr> |
| <tr> <td class="numLine"> 617</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the same value as this method.</span></pre></td></tr> |
| <tr> <td class="numLine"> 618</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 619</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the authentication token for which any successful authentication will be cached.</span></pre></td></tr> |
| <tr> <td class="numLine"> 620</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the cache key to use to cache the associated {@link AuthenticationInfo} after a successful authentication.</span></pre></td></tr> |
| <tr> <td class="numLine"> 621</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 622</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 623</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> Object getAuthenticationCacheKey(AuthenticationToken token) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 624</td> <td class="nbHitsUncovered"><a title="Line 624: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 624: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> token != <span class="keyword">null</span> ? token.getPrincipal() : <span class="keyword">null</span>;</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 625</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 626</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 627</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 628</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the key under which {@link AuthenticationInfo} instances are cached if authentication caching is enabled.</span></pre></td></tr> |
| <tr> <td class="numLine"> 629</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implementation delegates to</span></pre></td></tr> |
| <tr> <td class="numLine"> 630</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAvailablePrincipal(org.apache.shiro.subject.PrincipalCollection)}, which returns the primary principal</span></pre></td></tr> |
| <tr> <td class="numLine"> 631</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * associated with this particular Realm.</span></pre></td></tr> |
| <tr> <td class="numLine"> 632</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h3>Cache Invalidation on Logout</h3></span></pre></td></tr> |
| <tr> <td class="numLine"> 633</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>NOTE:</b> If you want to be able to invalidate an account's cached {@code AuthenticationInfo} on logout, you</span></pre></td></tr> |
| <tr> <td class="numLine"> 634</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * must ensure that this method returns the same value as the</span></pre></td></tr> |
| <tr> <td class="numLine"> 635</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getAuthenticationCacheKey(org.apache.shiro.authc.AuthenticationToken)} method!</span></pre></td></tr> |
| <tr> <td class="numLine"> 636</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 637</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param principals the principals of the account for which to set or remove cached {@code AuthenticationInfo}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 638</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the cache key to use when looking up cached {@link AuthenticationInfo} instances.</span></pre></td></tr> |
| <tr> <td class="numLine"> 639</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 640</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 641</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> Object getAuthenticationCacheKey(PrincipalCollection principals) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 642</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> getAvailablePrincipal(principals);</pre></td></tr> |
| <tr> <td class="numLine"> 643</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 644</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 645</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 646</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implementation clears out any cached authentication data by calling</span></pre></td></tr> |
| <tr> <td class="numLine"> 647</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #clearCachedAuthenticationInfo(org.apache.shiro.subject.PrincipalCollection)}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 648</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If overriding in a subclass, be sure to call {@code super.doClearCache} to ensure this behavior is maintained.</span></pre></td></tr> |
| <tr> <td class="numLine"> 649</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 650</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param principals principals the principals of the account for which to clear any cached data.</span></pre></td></tr> |
| <tr> <td class="numLine"> 651</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 652</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 653</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> @Override</pre></td></tr> |
| <tr> <td class="numLine"> 654</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">void</span> doClearCache(PrincipalCollection principals) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 655</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">super</span>.doClearCache(principals);</pre></td></tr> |
| <tr> <td class="numLineCover"> 656</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> clearCachedAuthenticationInfo(principals);</pre></td></tr> |
| <tr> <td class="numLineCover"> 657</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 658</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 659</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 660</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Clears out the AuthenticationInfo cache entry for the specified account.</span></pre></td></tr> |
| <tr> <td class="numLine"> 661</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 662</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This method is provided as a convenience to subclasses so they can invalidate a cache entry when they</span></pre></td></tr> |
| <tr> <td class="numLine"> 663</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * change an account's authentication data (e.g. reset password) during runtime. Because an account's</span></pre></td></tr> |
| <tr> <td class="numLine"> 664</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * AuthenticationInfo can be cached, there needs to be a way to invalidate the cache for only that account so that</span></pre></td></tr> |
| <tr> <td class="numLine"> 665</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * subsequent authentication operations don't used the (old) cached value if account data changes.</span></pre></td></tr> |
| <tr> <td class="numLine"> 666</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 667</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * After this method is called, the next authentication for that same account will result in a call to</span></pre></td></tr> |
| <tr> <td class="numLine"> 668</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken) doGetAuthenticationInfo}, and the</span></pre></td></tr> |
| <tr> <td class="numLine"> 669</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * resulting return value will be cached before being returned so it can be reused for later authentications.</span></pre></td></tr> |
| <tr> <td class="numLine"> 670</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 671</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If you wish to clear out all associated cached data (and not just authentication data), use the</span></pre></td></tr> |
| <tr> <td class="numLine"> 672</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #clearCache(org.apache.shiro.subject.PrincipalCollection)} method instead (which will in turn call this</span></pre></td></tr> |
| <tr> <td class="numLine"> 673</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * method by default).</span></pre></td></tr> |
| <tr> <td class="numLine"> 674</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 675</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param principals the principals of the account for which to clear the cached AuthorizationInfo.</span></pre></td></tr> |
| <tr> <td class="numLine"> 676</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #clearCache(org.apache.shiro.subject.PrincipalCollection)</span></pre></td></tr> |
| <tr> <td class="numLine"> 677</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 678</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 679</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">void</span> clearCachedAuthenticationInfo(PrincipalCollection principals) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 680</td> <td class="nbHitsUncovered"><a title="Line 680: Conditional coverage 50% (1/2)."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 680: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!CollectionUtils.isEmpty(principals)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 681</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> Cache<Object, AuthenticationInfo> cache = getAvailableAuthenticationCache();</pre></td></tr> |
| <tr> <td class="numLine"> 682</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//cache instance will be non-null if caching is enabled:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 683</td> <td class="nbHitsCovered"><a title="Line 683: Conditional coverage 100% (2/2)."> 9</a></td> <td class="src"><pre class="src"> <a title="Line 683: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cache != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 684</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Object key = getAuthenticationCacheKey(principals);</pre></td></tr> |
| <tr> <td class="numLineCover"> 685</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> cache.remove(key);</pre></td></tr> |
| <tr> <td class="numLine"> 686</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 687</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 688</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 689</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 690</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 691</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Retrieves authentication data from an implementation-specific datasource (RDBMS, LDAP, etc) for the given</span></pre></td></tr> |
| <tr> <td class="numLine"> 692</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * authentication token.</span></pre></td></tr> |
| <tr> <td class="numLine"> 693</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 694</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * For most datasources, this means just 'pulling' authentication data for an associated subject/user and nothing</span></pre></td></tr> |
| <tr> <td class="numLine"> 695</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * more and letting Shiro do the rest. But in some systems, this method could actually perform EIS specific</span></pre></td></tr> |
| <tr> <td class="numLine"> 696</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * log-in logic in addition to just retrieving data - it is up to the Realm implementation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 697</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 698</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * A {@code null} return value means that no account could be associated with the specified token.</span></pre></td></tr> |
| <tr> <td class="numLine"> 699</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 700</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the authentication token containing the user's principal and credentials.</span></pre></td></tr> |
| <tr> <td class="numLine"> 701</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an {@link AuthenticationInfo} object containing account data resulting from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 702</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * authentication ONLY if the lookup is successful (i.e. account exists and is valid, etc.)</span></pre></td></tr> |
| <tr> <td class="numLine"> 703</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws AuthenticationException if there is an error acquiring data or performing</span></pre></td></tr> |
| <tr> <td class="numLine"> 704</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * realm-specific authentication logic for the specified <tt>token</tt></span></pre></td></tr> |
| <tr> <td class="numLine"> 705</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 706</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">abstract</span> AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) <span class="keyword">throws</span> AuthenticationException;</pre></td></tr> |
| <tr> <td class="numLine"> 707</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 708</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| </table> |
| |
| <div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 2/25/14 6:20 PM.</div> |
| </body> |
| </html> |