<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>Deprecated List (Apache Shiro :: Core 1.11.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Deprecated List (Apache Shiro :: Core 1.11.0 API)";
        }
    }
    catch(err) {
    }
//-->
var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav"><!-- Matomo --> <script>   var _paq = window._paq = window._paq || [];   /* tracker methods like "setCustomDimension" should be called before "trackPageView" */   /* We explicitly disable cookie tracking to avoid privacy issues */   _paq.push(['disableCookies']);   _paq.push(['trackPageView']);   _paq.push(['enableLinkTracking']);   (function() {     var u="//matomo.privacy.apache.org/";     _paq.push(['setTrackerUrl', u+'matomo.php']);     _paq.push(['setSiteId', '2']);     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];     g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);   })(); </script> <!-- End Matomo Code -->
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2>
<ul>
<li><a href="#class">Classes</a></li>
<li><a href="#method">Methods</a></li>
<li><a href="#constructor">Constructors</a></li>
</ul>
</div>
<div class="contentContainer"><a id="class">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary">
<caption><span>Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/Md2CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Md2CredentialsMatcher</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> property.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/Md5CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Md5CredentialsMatcher</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> property.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/Sha1CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha1CredentialsMatcher</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> property.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/Sha256CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha256CredentialsMatcher</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> property.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/Sha384CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha384CredentialsMatcher</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> property.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/Sha512CredentialsMatcher.html" title="class in org.apache.shiro.authc.credential">org.apache.shiro.authc.credential.Sha512CredentialsMatcher</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.1 - use the HashedCredentialsMatcher directly and set its
             <a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> property.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/config/IniFactorySupport.html" title="class in org.apache.shiro.config">org.apache.shiro.config.IniFactorySupport</a></th>
<td class="colLast">
<div class="deprecationComment">use Shiro's <code>Environment</code> mechanisms instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/config/IniSecurityManagerFactory.html" title="class in org.apache.shiro.config">org.apache.shiro.config.IniSecurityManagerFactory</a></th>
<td class="colLast">
<div class="deprecationComment">use Shiro's <code>Environment</code> mechanisms instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html" title="class in org.apache.shiro.realm.ldap">org.apache.shiro.realm.ldap.DefaultLdapContextFactory</a></th>
<td class="colLast">
<div class="deprecationComment">replaced by the <a href="org/apache/shiro/realm/ldap/JndiLdapContextFactory.html" title="class in org.apache.shiro.realm.ldap"><code>JndiLdapContextFactory</code></a> implementation.  This implementation will be removed
 prior to Shiro 2.0</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/realm/ldap/JndiLdapRealm.html" title="class in org.apache.shiro.realm.ldap">org.apache.shiro.realm.ldap.JndiLdapRealm</a></th>
<td class="colLast">
<div class="deprecationComment">Renamed to <a href="org/apache/shiro/realm/ldap/DefaultLdapRealm.html" title="class in org.apache.shiro.realm.ldap"><code>DefaultLdapRealm</code></a>, this class will be removed prior to 2.0</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/util/JavaEnvironment.html" title="class in org.apache.shiro.util">org.apache.shiro.util.JavaEnvironment</a></th>
<td class="colLast">
<div class="deprecationComment">This class is no longer used in Shiro and will be removed in the next major version.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a id="method">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#getSalt(org.apache.shiro.authc.AuthenticationToken)">org.apache.shiro.authc.credential.HashedCredentialsMatcher.getSalt&#8203;(AuthenticationToken)</a></th>
<td class="colLast">
<div class="deprecationComment">since Shiro 1.1.  Hash salting is now expected to be based on if the <a href="org/apache/shiro/authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>AuthenticationInfo</code></a>
             returned from the <code>Realm</code> is a <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a> instance and its
             <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html#getCredentialsSalt()"><code>getCredentialsSalt()</code></a> method returns a non-null value.
             This method and the 1.0 behavior still exists for backwards compatibility if the <code>Realm</code> does not return
             <code>SaltedAuthenticationInfo</code> instances, but <b>it is highly recommended that <code>Realm</code> implementations
             that support hashed credentials start returning <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a>
             instances as soon as possible</b>.<p/>
             This is because salts should always be obtained from the stored account information and
             never be interpreted based on user/Subject-entered data.  User-entered data is easier to compromise for
             attackers, whereas account-unique (and secure randomly-generated) salts never disseminated to the end-user
             are almost impossible to break.  This method will be removed in Shiro 2.0.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#isHashSalted()">org.apache.shiro.authc.credential.HashedCredentialsMatcher.isHashSalted()</a></th>
<td class="colLast">
<div class="deprecationComment">since Shiro 1.1.  Hash salting is now expected to be based on if the <a href="org/apache/shiro/authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>AuthenticationInfo</code></a>
             returned from the <code>Realm</code> is a <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a> instance and its
             <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html#getCredentialsSalt()"><code>getCredentialsSalt()</code></a> method returns a non-null value.
             This method and the 1.0 behavior still exists for backwards compatibility if the <code>Realm</code> does not return
             <code>SaltedAuthenticationInfo</code> instances, but <b>it is highly recommended that <code>Realm</code> implementations
             that support hashed credentials start returning <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a>
             instances as soon as possible</b>.
             <p/>
             This is because salts should always be obtained from the stored account information and
             never be interpreted based on user/Subject-entered data.  User-entered data is easier to compromise for
             attackers, whereas account-unique (and secure randomly-generated) salts never disseminated to the end-user
             are almost impossible to break.  This method will be removed in Shiro 2.0.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/authc/credential/HashedCredentialsMatcher.html#setHashSalted(boolean)">org.apache.shiro.authc.credential.HashedCredentialsMatcher.setHashSalted&#8203;(boolean)</a></th>
<td class="colLast">
<div class="deprecationComment">since Shiro 1.1.  Hash salting is now expected to be based on if the <a href="org/apache/shiro/authc/AuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>AuthenticationInfo</code></a>
             returned from the <code>Realm</code> is a <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a> instance and its
             <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html#getCredentialsSalt()"><code>getCredentialsSalt()</code></a> method returns a non-null value.
             This method and the 1.0 behavior still exists for backwards compatibility if the <code>Realm</code> does not return
             <code>SaltedAuthenticationInfo</code> instances, but <b>it is highly recommended that <code>Realm</code> implementations
             that support hashed credentials start returning <a href="org/apache/shiro/authc/SaltedAuthenticationInfo.html" title="interface in org.apache.shiro.authc"><code>SaltedAuthenticationInfo</code></a>
             instances as soon as possible</b>.
             <p/>
             This is because salts should always be obtained from the stored account information and
             never be interpreted based on user/Subject-entered data.  User-entered data is easier to compromise for
             attackers, whereas account-unique (and secure randomly-generated) salts never disseminated to the end-user
             are almost impossible to break.  This method will be removed in Shiro 2.0.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/mgt/DefaultSecurityManager.html#bind(org.apache.shiro.subject.Subject)">org.apache.shiro.mgt.DefaultSecurityManager.bind&#8203;(Subject)</a></th>
<td class="colLast">
<div class="deprecationComment">in favor of <a href="org/apache/shiro/mgt/DefaultSecurityManager.html#save(org.apache.shiro.subject.Subject)"><code>save(subject)</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/mgt/DefaultSecurityManager.html#unbind(org.apache.shiro.subject.Subject)">org.apache.shiro.mgt.DefaultSecurityManager.unbind&#8203;(Subject)</a></th>
<td class="colLast">
<div class="deprecationComment">in Shiro 1.2 in favor of <a href="org/apache/shiro/mgt/DefaultSecurityManager.html#delete(org.apache.shiro.subject.Subject)"><code>DefaultSecurityManager.delete(org.apache.shiro.subject.Subject)</code></a></div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/mgt/DefaultSubjectFactory.html#newSubjectInstance(org.apache.shiro.subject.PrincipalCollection,boolean,java.lang.String,org.apache.shiro.session.Session,org.apache.shiro.mgt.SecurityManager)">org.apache.shiro.mgt.DefaultSubjectFactory.newSubjectInstance&#8203;(PrincipalCollection, boolean, String, Session, SecurityManager)</a></th>
<td class="colLast">
<div class="deprecationComment">since 1.2 - override <a href="org/apache/shiro/mgt/DefaultSubjectFactory.html#createSubject(org.apache.shiro.subject.SubjectContext)"><code>DefaultSubjectFactory.createSubject(org.apache.shiro.subject.SubjectContext)</code></a> directly if you
             need to instantiate a custom <a href="org/apache/shiro/subject/Subject.html" title="interface in org.apache.shiro.subject"><code>Subject</code></a> class.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#getLdapContext(java.lang.String,java.lang.String)">org.apache.shiro.realm.ldap.DefaultLdapContextFactory.getLdapContext&#8203;(String, String)</a></th>
<td class="colLast">
<div class="deprecationComment">the <a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#getLdapContext(java.lang.Object,java.lang.Object)"><code>DefaultLdapContextFactory.getLdapContext(Object, Object)</code></a> method should be used in all cases to ensure more than
             String principals and credentials can be used.  Shiro no longer calls this method - it will be
             removed before the 2.0 release.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#setSearchBase(java.lang.String)">org.apache.shiro.realm.ldap.DefaultLdapContextFactory.setSearchBase&#8203;(String)</a></th>
<td class="colLast">
<div class="deprecationComment">this attribute existed, but was never used in Shiro 1.x.  It will be removed prior to Shiro 2.0.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/realm/ldap/JndiLdapContextFactory.html#getLdapContext(java.lang.String,java.lang.String)">org.apache.shiro.realm.ldap.JndiLdapContextFactory.getLdapContext&#8203;(String, String)</a></th>
<td class="colLast">
<div class="deprecationComment">the <a href="org/apache/shiro/realm/ldap/JndiLdapContextFactory.html#getLdapContext(java.lang.Object,java.lang.Object)"><code>JndiLdapContextFactory.getLdapContext(Object, Object)</code></a> method should be used in all cases to ensure more than
             String principals and credentials can be used.  Shiro no longer calls this method - it will be
             removed before the 2.0 release.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/realm/ldap/LdapContextFactory.html#getLdapContext(java.lang.String,java.lang.String)">org.apache.shiro.realm.ldap.LdapContextFactory.getLdapContext&#8203;(String, String)</a></th>
<td class="colLast">
<div class="deprecationComment">the <a href="org/apache/shiro/realm/ldap/LdapContextFactory.html#getLdapContext(java.lang.Object,java.lang.Object)"><code>LdapContextFactory.getLdapContext(Object, Object)</code></a> method should be used in all cases to ensure more than
 String principals and credentials can be used.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/util/CollectionUtils.html#isEmpty(org.apache.shiro.subject.PrincipalCollection)">org.apache.shiro.util.CollectionUtils.isEmpty&#8203;(PrincipalCollection)</a></th>
<td class="colLast">
<div class="deprecationComment">Use PrincipalCollection.isEmpty() directly.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a id="constructor">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/apache/shiro/UnavailableSecurityManagerException.html#%3Cinit%3E(java.lang.String,java.lang.Throwable)">org.apache.shiro.UnavailableSecurityManagerException&#8203;(String, Throwable)</a></th>
<td class="colLast">
<div class="deprecationComment">This constructor is NOT used by Shiro directly, and will be removed in the future.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2023 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
