<!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>Apache Shiro | Simple. Java. Security.</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <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="Apache Shiro | Simple. Java. Security."/>
    <meta property="og:type" content="website"/>
    <meta property="og:locale" content="en_US" />
    <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="row">

  <div class="col-md-9 col-md-pull-3">

    <div class="p-5 bg-light rounded-3 mb-4 shadow-sm">
      <b>Apache Shiro&trade;</b> is a powerful and easy-to-use Java security framework that performs authentication,
      authorization, cryptography, and session management. With Shiro&#8217;s easy-to-understand API, you can
      quickly and easily secure any application &#8211; from the smallest mobile applications to the largest web
      and enterprise applications.
    </div>

    <div class="row row-padded">
      <div class="col-md-6 col-sm-6">
        <h1>Getting Started</h1>

        <ul>
          <li><a href="https://www.infoq.com/articles/apache-shiro">What is Apache Shiro?</a></li>
          <li><a href="10-minute-tutorial.html">10 Minute Tutorial</a></li>
          <li><a href="articles.html">More articles...</a></li>
        </ul>
      </div>

      <div class="col-md-6 col-sm-6 col-padded-top col-center">
        <div style="width: 100%; max-width: 272px; display: inline-block; text-align: center; margin-left: 50px; padding-bottom: 15px;">
          <iframe width="310" height="233"
                  src="https://www.youtube.com/embed/YJByiDvOhsc?rel=0"
                  allowfullscreen>
          </iframe>
        </div>
      </div>
    </div>

    <div class="row row-padded">
      <div class="col-md-6 col-sm-6 panel mb-3">
        <div class="panel-heading authentication">
          <h2 class="panel-title"> Authentication </h2>
        </div>
        <div class="card-body shadow-sm pb-2">
          <p>Support logins across one or more pluggable data sources (LDAP, JDBC, Active Directory...</p>
          <a href="authentication-features.html"><span class="more">Read More &gt;&gt;&gt;</span></a>
        </div>
      </div>

      <div class="col-md-6 col-sm-6 panel mb-3">
        <div class="panel-heading authorization">
          <h2 class="panel-title"> Authorization</h2>
        </div>
        <div class="card-body shadow-sm pb-2">
          <p>Perform access control based on roles or fine grained permissions, also using plug...</p>
          <a href="authorization-features.html"><span class="more">Read More &gt;&gt;&gt;</span></a>
        </div>
      </div>
    </div>

    <div class="row row-padded">
      <div class="col-md-6 col-sm-6 panel mb-3">
        <div class="panel-heading cryptography">
          <h2 class="panel-title"> Cryptography</h2>
        </div>
        <div class="card-body shadow-sm pb-2">
          <p>Secure data with the easiest possible Cryptography API&#8217;s available, giving you...</p>
          <a href="cryptography-features.html"><span class="more">Read More &gt;&gt;&gt;</span></a>
        </div>
      </div>

      <div class="col-md-6 col-sm-6 panel mb-3">
        <div class="panel-heading session-management">
          <h2 class="panel-title"> Session Management</h2>
        </div>
        <div class="card-body shadow-sm pb-2">
          <p>Use sessions in any environment, even outside web or EJB containers. Easily...</p>
          <a href="session-management-features.html"><span class="more">Read More &gt;&gt;&gt;</span></a>
        </div>
      </div>
    </div>

    <div class="row row-padded">
      <div class="col-md-6 col-sm-6 panel mb-3">
        <div class="panel-heading web-integration">
          <h2 class="panel-title"> Web Integration</h2>
        </div>
        <div class="card-body shadow-sm pb-2">
          <p>Save development time with innovative approaches that easily handle web specific...</p>
          <a href="web-features.html"><span class="more">Read More &gt;&gt;&gt;</span></a>
        </div>
      </div>

      <div class="col-md-6 col-sm-6 panel mb-3">
        <div class="panel-heading integrations">
          <h2 class="panel-title"> Integrations</h2>
        </div>
        <div class="card-body shadow-sm pb-2">
          <p>API&#8217;s giving you power and simplicty beyond what Java provides by default...</p>
          <a href="integration.html"><span class="more">Read More &gt;&gt;&gt;</span></a>
        </div>
      </div>
    </div>

  </div>

  <div class="col-md-3 col-md-push-9">

    <div class="hidden-xs hidden-sm">
      <div class="d-grid gap-2">
        <a href="download.html"
           class="btn btn-success btn-lg" style="margin-bottom: 30px;">
          Download
        </a>
      </div>

      <div class="card border-primary mb-4 shadow-sm">
        <div class="card-header bg-primary text-white" style="text-align: center;">
          <h3 class="card-title">Latest news:</h3>
        </div>

        <div class="card-body">
          <div>
            <a href="blog/2024/02/apache-shiro-200-released.html"><h4 class="news-title">2.0.0 available</h4></a>
            <p><small>by Lenny Primak on 2024-02-28</small></p>
          </div>
          <div>
            <a href="blog/2023/11/10/apache-shiro-1130-released.html"><h4 class="news-title">1.13.0 available with fix CVE-2023-46750</h4></a>
            <p><small>by Francois Papon on 2023-11-10</small></p>
          </div>
          <div>
            <a href="blog/2023/07/18/apache-shiro-1120-released.html"><h4 class="news-title">1.12.0 available with fix CVE-2023-34478</h4></a>
            <p><small>by Francois Papon on 2023-07-18</small></p>
          </div>
          <div>
            <a href="blog/2023/05/04/apache-shiro-200-alpha-1-released.html"><h4 class="news-title">2.0.0-alpha available</h4></a>
            <p><small>by Lenny Primak on 2023-05-04</small></p>
          </div>
          <div>
            <a href="blog/2023/01/13/apache-shiro-1110-released.html"><h4 class="news-title">1.11.0 available with fix CVE-2023-22602</h4></a>
            <p><small>by Brian Demers on 2023-01-13</small></p>
          </div>
          <hr/>

          <nav class="" aria-label="News Pagination">
            <ul class="pagination justify-content-center">
              <li class="page-item disabled" aria-disabled="true" disabled><a class="page-link" rel="prev" href="#">Previous</a></li>
              <li class="page-item"><a class="page-link" rel="self" href="">1</a></li>
              <li class="page-item"><a class="page-link" rel="next" href="2">Next</a></li>
              <li class="page-item"><a class="page-link" href="news.html">Archive</a></li>
            </ul>
          </nav>
        </div>
    </div>
    <div class="card border-primary mb-4 shadow-sm">
      <div class="card-header bg-primary text-white" style="text-align: center;">
        <h3 class="card-title">Popular Guides:</h3>
      </div>

        <div class="card-body">
          <div>
            <a href="java-authentication-guide.html"><h4 class="popular-guides">Java Authentication Guide</h4></a>
            <p><small>Learn how Shiro securely verifies identities.</small></p>
          </div>
          <div>
            <a href="java-authorization-guide.html"><h4 class="popular-guides">Java Authorization Guide</h4></a>
            <p><small>Learn how Shiro handles permissions, roles and users.</small></p>
          </div>
          <div>
            <a href="webapp-tutorial.html"><h4 class="popular-guides">Web App Tutorial</h4></a>
            <p><small>Step-by-step tutorial for securing a web application with Apache Shiro.</small></p>
          </div>
          <div>
            <a href="https://www.infoq.com/minibooks/apache-shiro-ee-7"><h4 class="popular-guides">Apache Shiro Mini Book</h4></a>
            <p><small>A free InfoQ mini-book by<br/><a href="https://twitter.com/nebrasslamouchi">Nebrass Lamouchi</a></small></p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div id="push"></div>


<!-- before footer -->
</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">
        </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>
