<!DOCTYPE html>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-  2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>Understanding the SecurityManager in Apache Shiro | Apache Shiro</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="keywords" content='permissions,authorization,authentication,securitymanager'>
    <meta name="generator" content="JBake">
    <meta name="google-site-verification" content="QIax6uT5UX3enoU0G8Pz2pXbQ45KaQuHZ3nCh9V27mw">
    <meta name="google-site-verification" content="ecFap6dWJgS_GCCtxmJQJ_nFYQhM6EgSpBPZDU7xsCE">
    <meta name="google-site-verification" content="gBTYOG8lMfNb_jrWrH3kFbudpEs_WrAJ2lb2-zLRaso"/>
    <meta name="msvalidate.01" content="0B57EB46CBFAD8FD45008D2DB6B6C68C">

    <meta property="og:title" content="Understanding the SecurityManager in Apache Shiro | Apache Shiro"/>
    <meta property="og:type" content="article"/>
      <meta name="twitter:card" content="summary" />
    <meta name="twitter:site" content="@ApacheShiro" />
    <meta property="article:modification_time" content="2010-03-18T00:00:00Z"/>
    <meta property="article:tag" content='permissions'/>
    <meta property="article:tag" content='authorization'/>
    <meta property="article:tag" content='authentication'/>
    <meta property="article:tag" content='securitymanager'/>
    <meta property="og:locale" content="en_US" />
    <meta property="og:url" content='https://shiro.apache.org/securitymanager.html'/>
    <meta property="og:image" content='images/shiro-featured-image.png'/>
    <meta property="og:image:width" content='1200'/>
    <meta property="og:image:height" content='628'/>
    <meta property="og:site_name" content="Apache Shiro"/>

    <!-- Le styles -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="bootstrap-icons-1.5.0/bootstrap-icons.css" rel="stylesheet">
    <link href="css/asciidoctor.css" rel="stylesheet">
    <link href="css/base.css" rel="stylesheet">
    <link href="highlight.js-11.2.0/styles/default.min.css" rel="stylesheet">
    <link href="css/gh-pages/gh-fork-ribbon.css" rel="stylesheet"/>

    <!-- Fav and touch icons -->
    <!--<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">-->
    <link rel="shortcut icon" href="favicon.ico">

    <!-- Matomo -->
    <script>
        var _paq = window._paq = window._paq || [];
        /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
        _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 -->
  </head>
  <body>
    <div id="top-bar"></div>
    <a class="github-fork-ribbon right-top" href="https://github.com/apache/shiro" title="Fork me on GitHub">Fork me on GitHub</a>

    <div id="wrap">

      <div class="masthead">
        <p class="lead">
          <a href="index.html"><img src="images/apache-shiro-logo.png" style="height:100px; width:auto; vertical-align: bottom; margin-top: 20px;" alt="Apache Shiro Logo"></a>
          <span class="tagline">Simple. Java. Security.</span>
          <a class="pull-right" href="https://www.apache.org/events/current-event.html">
            <img style="padding-top: 8px" src="https://www.apache.org/events/current-event-125x125.png" alt="Apache Software Foundation Event Banner"/>
          </a>
        </p>
      </div>

	<!-- Fixed navbar -->
    <nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm mb-4">
      <div class="container-fluid">
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav me-auto mb-2 mb-lg-0">
            <li class="nav-item">
              <a class="nav-link" href="get-started.html">Get Started</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="documentation.html">Docs</a>
            </li>

            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-webapps" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Web Apps
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-webapps">
                <li><a class="dropdown-item" href="web.html">General</a></li>
                <li><a class="dropdown-item" href="jaxrs.html">JAX-RS</a></li>
                <li><a class="dropdown-item" href="jakarta-ee.html">Jakarta EE</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="web-features.html">Features</a></li>
              </ul>
            </li>

            <li><a class="nav-link" href="features.html">Features</a></li>

            <!-- integrations -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-integrations" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Integrations
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-integrations">
                <li><a class="dropdown-item" href="spring-boot.html">Spring</a></li>
                <li><a class="dropdown-item" href="guice.html">Guice</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="integration.html">Third-Party Integrations</a></li>
              </ul>
            </li>

            <!-- Community -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-community" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Community
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-community">
                <li><a class="dropdown-item" href="forums.html">Community Forums</a></li>
                <li><a class="dropdown-item" href="mailing-lists.html">Mailing Lists</a></li>
                <li><a class="dropdown-item" href="articles.html">Articles</a></li>
                <li><a class="dropdown-item" href="news.html">News</a></li>
                <li><a class="dropdown-item" href="events.html">Events</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="community.html">More</a></li>
              </ul>
            </li>

            <!-- About -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-about" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                About
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-about">
                <li><a class="dropdown-item" href="about.html">About</a></li>
                <li><a class="dropdown-item" href="privacy-policy.html">Privacy Policy</a></li>
                <li><a class="dropdown-item" href="security-reports.html">Vulnerability Reports</a></li>
              </ul>
            </li>
          </ul>

          <ul class="d-flex justify-content-end navbar-nav mb-2 mb-lg-0">
            <!-- The ASF -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-asf" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Apache Software Foundation
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-asf">
                <li><a class="dropdown-item" href="https://www.apache.org/">Apache Homepage</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/licenses/">License</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/security/">Security</a></li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>

	<div class="page-header">
		<h1>Understanding the SecurityManager in Apache Shiro</h1>
	</div>


  <div class="admonitionblock tip">
    <table>
      <tbody>
        <tr>
          <td class="icon">
            <div class="title">Handy Hint</div>
          </td>
          <td class="content">
            <div class="title">Shiro v1 version notice</div>
            <div class="paragraph">
              <p>As of 2024-03-01, Shiro v1 will soon be superseded by v2.<p>
            </div>
          </td>
        </tr>
      </tbody>
    </table>
  </div>

<div id="preamble">
<div class="sectionbody">
<div id="SecurityManager-UnderstandingtheSecurityManagerinApacheShiro" class="paragraph">
<p>The <a href="static/current/apidocs/org/apache/shiro/mgt/SecurityManager.html">SecurityManager</a> lies at the heart of Shiro&#8217;s architecture. While the <a href="subject.html">Subject</a> represents security functionality and state for a <em>single</em> application user, the <code>SecurityManager</code> performs security operations and manages state for <em>all</em> application users.</p>
</div>
<div class="paragraph">
<p>Because Shiro&#8217;s API encourages a <code>Subject</code>-centric programming approach, most application developers will rarely, if ever, interact with the <code>SecurityManager</code> directly (framework developers however might sometimes find it useful). Even so, it is still important to know how the <code>SecurityManager</code> functions, especially when configuring one for an application.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="SecurityManager-Design">Design</h2>
<div class="sectionbody">
<div class="paragraph">
<p>As stated previously, the application&#8217;s <code>SecurityManager</code> performs security operations and manages state for <em>all</em> application users. In Shiro&#8217;s default <code>SecurityManager</code> implementations, this includes:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Authentication</p>
</li>
<li>
<p>Authorization</p>
</li>
<li>
<p>Session Management</p>
</li>
<li>
<p>Cache Management</p>
</li>
<li>
<p><a href="realm.html">Realm</a> coordination</p>
</li>
<li>
<p>Event propagation</p>
</li>
<li>
<p>"Remember Me" Services</p>
</li>
<li>
<p>Subject creation</p>
</li>
<li>
<p>Logout</p>
</li>
<li>
<p>and more!</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>But this is a lot of functionality to try to manage in a single component. And, making these things flexible and customizable would be very difficult if everything were lumped into a single implementation class.</p>
</div>
<div class="paragraph">
<p>To simplify configuration and enable flexible configuration/pluggability, Shiro&#8217;s implementations are all highly modular in design - so modular in fact, that the SecurityManager implementation (and its class-hierarchy) does not do much at all. Instead, the <code>SecurityManager</code> implementations mostly act as a lightweight 'container' component, delegating almost all behavior to nested/wrapped components.</p>
</div>
<div class="sect2">
<h3 id="SecurityManager-Modularity">Modularity</h3>
<div class="paragraph">
<p>To simplify the <code>SecurityManager</code> implementation complexity and allow for pluggable behavior, the Shiro <code>SecurityManager</code> implementations delegate almost all logic to a nested set of modular components that actually perform the necessary functionality. While the components actually execute the logic, the <code>SecurityManager</code> implementation knows how and when to coordinate the components for the correct behavior.</p>
</div>
<div class="paragraph">
<p>The nested components that the <code>SecurityManager</code> coordinates and delegates to are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Authenticator (<code>org.apache.shiro.authc.Authenticator</code>)</p>
</li>
<li>
<p>Authorizer (<code>org.apache.shiro.authz.Authorizer</code>)</p>
</li>
<li>
<p>SessionManager (<code>org.apache.shiro.session.mgt.SessionManager</code>)</p>
</li>
<li>
<p><a href="cachemanager.html">CacheManager</a> (<code>org.apache.shiro.cache.CacheManager</code>)</p>
</li>
<li>
<p>RememberMeManager (<code>org.apache.shiro.mgt.RememberMeManager</code>)</p>
</li>
<li>
<p>SubjectFactory(<code>org.apache.shiro.mgt.SubjectFactory</code>)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The <code>SecurityManager</code> implementations and are also JavaBeans compatible, which allows you (or a configuration mechanism) to easily customize the pluggable components via standard JavaBeans accessor/mutator methods (get*/set*). This means the Shiro&#8217;s architectural modularity can translate into very easy configuration for custom behavior.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<div class="title">Tip</div>
</td>
<td class="content">
<div class="title">Easy Configuration</div>
<div class="paragraph">
<p>Because of JavaBeans compatibility, it is very easy to configure the <code>SecurityManager</code> with custom components via any mechanism that supports JavaBeans-style configuration, such as <a href="spring.html">Spring</a>, Guice, JBoss, etc.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="SecurityManager-ProgrammaticConfiguration">Programmatic Configuration</h3>
<div class="paragraph">
<p>The absolute simplest way to create a SecurityManager and make it available to the application is to create a <code>org.apache.shiro.mgt.DefaultSecurityManager</code> and wire it up in code:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Realm realm = //instantiate or acquire a Realm instance.  We'll discuss Realms later.
SecurityManager securityManager = new DefaultSecurityManager(realm);
//Make the SecurityManager instance available to the entire application:
SecurityUtils.setSecurityManager(securityManager);</code></pre>
</div>
</div>
<div class="paragraph">
<p>Surprisingly, after only 3 lines of code, you now have a fully functional Shiro environment suitable for most applications. How easy was that!?</p>
</div>
<div class="paragraph">
<p>You could additionally call any of the <code>SecurityManager</code> instance&#8217;s setter methods with custom implementations of the nested components listed above to fully customize its behavior.</p>
</div>
<div class="paragraph">
<p>But, as simple as programmatic customization is, these 3 lines of code do not represent the ideal configuration for most real world applications. There are a few reasons why programmatic configuration may not be suitable for your application:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>It requires you to know about and instantiate a direct implementation. It would be nicer if you didn&#8217;t have to know about concrete implementations and where to find them.</p>
</li>
<li>
<p>The <code>SecurityUtils.setSecurityManager</code> method call makes the instantiated <code>SecurityManager</code> instance a VM static singleton, which, while fine for many applications, would cause problems if more than one Shiro-enabled application was running on the same JVM. It could be better if the instance was an application singleton, but not a static memory reference.</p>
</li>
<li>
<p>It requires you to recompile your application every time you want to make a Shiro configuration change.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Most applications instead benefit from text-based configuration that could be modified independently of source code and even make things easier to understand for those not intimately familiar with Shiro&#8217;s APIs.</p>
</div>
</div>
<div class="sect2">
<h3 id="SecurityManager-TextConfiguration">Text Configuration</h3>
<div class="paragraph">
<p>Shiro provides a simple INI-based <a href="configuration.html">configuration</a> that can be used out of the box, but any other JavaBeans-compatible mechanism can be used as well. For example, Shiro has excellent <a href="spring.html">Spring support</a> too. Other similar frameworks (Guice, JBoss, etc.) could also be used.</p>
</div>
</div>
</div>
</div>
	<hr />

</div> 

    <div class="footer-padding"></div>

    <div class="container-fluid pt-2 border-top" id="custom-footer">
      <footer class="row justify-content-between align-items-center">
        <div class=" col-md-5">
          <div class="copyright-footer justify-content-start">
            <a href="https://www.apache.org/foundation/contributing.html">Donate to the ASF</a>&nbsp;|&nbsp;
            <a href="https://www.apache.org/licenses/LICENSE-2.0.html">License</a>&nbsp;
            <p class="text-muted">Copyright &copy; 2008-2024 The Apache Software Foundation</p>
          </div>
        </div>

        <div class="d-flex justify-content-center col-md-1">
          <a class="btn btn-social"><span class="social-icon social-twitter"><i class="bi bi-twitter"></i></span></a>
          <a class="btn btn-social"><span class="social-icon social-facebook"><i class="bi bi-facebook"></i></span></a>
          <a class="btn btn-social"><span class="social-icon social-linkedin"><i class="bi bi-linkedin"></i></span></a>
        </div>

        <div class="d-flex justify-content-end col-md-4" id="editThisPage">
          <input type="hidden" id="ghEditPage" value="https://github.com/apache/shiro-site/edit/main/src/site/content/securitymanager.adoc"/>
        </div>

        <div class="d-flex col-md-2 justify-content-end" style="position: relative">
          <div class="footer-shield"></div>
        </div>
      </footer>
    </div>


    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="js/bootstrap.min.js"></script>
    <script src="highlight.js-11.2.0/highlight.min.js"></script>
    <script src="js/shiro.js"></script>

    <script>
        docReady(
          addPageEditLink()
      );
    </script>
    <script>hljs.highlightAll();</script>

    </body>
</html>
