<!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>Download Apache Shiro | Apache Shiro</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="keywords" content='documentation,download'>
    <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="Download Apache Shiro | Apache Shiro"/>
    <meta property="og:type" content="website"/>
    <meta property="article:tag" content='documentation'/>
    <meta property="article:tag" content='download'/>
    <meta property="og:locale" content="en_US" />
    <meta property="og:url" content='https://shiro.apache.org/download.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>Download Apache Shiro</h1>
  </div>

<p><div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Apache Shiro 2.0.0 is the current stable release (Java 11+).</p>
</div>
<div class="paragraph">
<p>To download Shiro please follow the instructions below.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="code_signatures">Code Signatures</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You may <a href="https://infra.apache.org/release-signing.html#verifying-signature">verify the authenticity</a> of all artifacts below by using the PGP <a href="https://downloads.apache.org/shiro/KEYS">KEYS</a> file.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="current_release">Current Release</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The current release is 2.0.0.
For older releases, please visit our <a href="release-archive.html">release archive</a>.</p>
</div>
</div>
</div></p>



<p>
  <ul>
    <li><a href="#200">Apache Shiro Release v2.0.0</a></li>
    <ul>
      <li><a href="#200Source">2.0.0 Source Code Distribution</a></li>
      <li><a href="#200Git">2.0.0 Git Source repository</a></li>
      <li><a href="#200Binary">2.0.0 Binaries</a></li>
    </ul>
  </ul>
</p>



  <section id="200">
  <h2>Release 2.0.0</h2>

  <h3 id="200Source">2.0.0 Source Code Distribution</h3>

  <p>The source bundle requires JDK 1.8 and Maven 3.0.3+ to build:

  <code><a class="external-link" href="https://www.apache.org/dyn/closer.lua/shiro/2.0.0/shiro-root-2.0.0-source-release.zip">shiro-root-2.0.0-source-release.zip</a></code>
    (<a class="external-link"
        href="https://downloads.apache.org/shiro/2.0.0/shiro-root-2.0.0-source-release.zip.asc">pgp</a>, <a
            class="external-link"
            href="https://downloads.apache.org/shiro/2.0.0/shiro-root-2.0.0-source-release.zip.sha512">sha512</a>)
  </code>

  <p>Associated documentation can be found <a href="documentation.html" title="Documentation">here</a></p>

  <h3 id="200Git">2.0.0 Git Source repository</h3>

  <p>The source can be cloned anonymously from Git with this command:</p>
  <pre><code class="language-bash bash">git clone https://github.com/apache/shiro.git
git checkout shiro-root-2.0.0
</code>
</pre>

  <h3 id="200Binary">2.0.0 Binaries</h3>

  <p>If you don't want to build yourself, you can download pre-built binaries from Maven Central, just click the link in the "Artifact" column. If you would like
    acquire Shiro through Maven, then please use the markup listed under "Maven Usage"</p>

  <p>
  </p>

<table style="width: 100%" class="table">
  <thead>
    <tr>
      <th class="col-md-1">Artifact</th>
      <th class="col-md-3">Maven Usage</th>
      <th class="col-md-3">Notes</th>
    </tr>
  </thead>

  <tbody>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-core/2.0.0/shiro-core-2.0.0.jar">shiro-core</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-core/2.0.0/shiro-core-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-core&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Required in all environments.
<a class="external-link" href="https://slf4j.org/">Slf4j</a>'s <code>slf4j-api</code> jar
and one of its binding jars is required.
<code>commons-beanutils</code> is required only if using INI config.
</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-web/2.0.0/shiro-web-2.0.0.jar">shiro-web</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-web/2.0.0/shiro-web-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-web&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables support for web-based applications.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-servlet-plugin/2.0.0/shiro-servlet-plugin-2.0.0.jar">shiro-servlet-plugin</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-servlet-plugin/2.0.0/shiro-servlet-plugin-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-servlet-plugin&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Servlet Fragment which configures Shiro's servlet filter.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-cdi/2.0.0/shiro-cdi-2.0.0.jar">shiro-cdi</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-cdi/2.0.0/shiro-cdi-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-cdi&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables support for CDI integration.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-jakarta-ee/2.0.0/shiro-jakarta-ee-2.0.0.jar">shiro-jakarta-ee</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-jakarta-ee/2.0.0/shiro-jakarta-ee-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-jakarta-ee&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Jakarta EE Web Profile integration.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-jaxrs/2.0.0/shiro-jaxrs-2.0.0.jar">shiro-jaxrs</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-jaxrs/2.0.0/shiro-jaxrs-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-jaxrs&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables support for JAX-RS applications.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-aspectj/2.0.0/shiro-aspectj-2.0.0.jar">shiro-aspectj</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-aspectj/2.0.0/shiro-aspectj-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-aspectj&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables <a class="external-link" href="https://www.eclipse.org/aspectj/">AspectJ</a> support for Shiro AOP and Annotations.
</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-cas/2.0.0/shiro-cas-2.0.0.jar">shiro-cas</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-cas/2.0.0/shiro-cas-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-cas&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables Jasig <a class='external-link' href='https://wiki.jasig.org/display/CAS/Home'>CAS</a> support.
<strong>Warning:</strong>&nbsp;
Shiro-CAS support is deprecated, support has been moved
to the Apache Shiro based <a href='https://github.com/bujiio/buji-pac4j'>buji-pac4j</a> project.
</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-ehcache/2.0.0/shiro-ehcache-2.0.0.jar">shiro-ehcache</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-ehcache/2.0.0/shiro-ehcache-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-ehcache&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables <a class="external-link" href="https://www.ehcache.org">Ehcache</a>-based famework caching.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-hazelcast/2.0.0/shiro-hazelcast-2.0.0.jar">shiro-hazelcast</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-hazelcast/2.0.0/shiro-hazelcast-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-hazelcast&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables <a class="external-link" href="https://hazelcast.org">Hazelcast</a>-based famework caching.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-features/2.0.0/shiro-features-2.0.0-features.xml">shiro-features</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-features/2.0.0/shiro-features-2.0.0-features.xml.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-features&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>OSGi / <a class="external-link" href="https://karaf.apache.org/">Apache Karaf</a> integration.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-guice/2.0.0/shiro-guice-2.0.0.jar">shiro-guice</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-guice/2.0.0/shiro-guice-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-guice&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables <a class="external-link" href="https://github.com/google/guice">Google Guice</a> integration.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-quartz/2.0.0/shiro-quartz-2.0.0.jar">shiro-quartz</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-quartz/2.0.0/shiro-quartz-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-quartz&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables <a class="external-link" href="https://www.quartz-scheduler.org/">Quartz</a>-based scheduling for Shiro native session validation.
</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-spring/2.0.0/shiro-spring-2.0.0.jar">shiro-spring</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-spring/2.0.0/shiro-spring-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-spring&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td>Enables <a class="external-link" href="https://spring.io/">Spring Framework</a> integration.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-spring-boot-starter/2.0.0/shiro-spring-boot-starter-2.0.0.jar">shiro-spring-boot-starter</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-spring-boot-starter/2.0.0/shiro-spring-boot-starter-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-spring-boot-starter&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td><a class="external-link" href="https://spring.io/">Spring Boot</a> starter.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-spring-boot-web-starter/2.0.0/shiro-spring-boot-web-starter-2.0.0.jar">shiro-spring-boot-web-starter</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/shiro-spring-boot-web-starter/2.0.0/shiro-spring-boot-web-starter-2.0.0.jar.asc">pgp</a>)
    </td>

    <td>
        <pre><code class="xml language-xml">&lt;dependency&gt;
  &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
  &lt;artifactId&gt;shiro-spring-boot-web-starter&lt;/artifactId&gt;
  &lt;version&gt;2.0.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
    </td>

    <td><a class="external-link" href="https://spring.io/">Spring Boot</a> web starter.</td>

  </tr>
  <tr>

    <td style="white-space: nowrap;">
      <a href="https://repo1.maven.org/maven2/org/apache/shiro/tools/shiro-tools-hasher/2.0.0/shiro-tools-hasher-2.0.0-cli.jar">shiro-tools-hasher</a><br/>
      (<a href="https://repo1.maven.org/maven2/org/apache/shiro/tools/shiro-tools-hasher/2.0.0/shiro-tools-hasher-2.0.0-cli.jar.asc">pgp</a>)
    </td>

    <td>
        <b>Not Relevant</b>
    </td>

    <td>A command-line program to perform hashing (MD5, SHA, etc) for files, streams and passwords.
Note that this is a command line program and not intended to be used as a Maven/program dependency.
It is intended to be downloaded and executed:
<pre><code class='bash'> java -jar shiro-tools-hasher-2.0.0-cli.jar</code></pre>
</td>

  </tr>
  </tbody>
</table>

  </section>



<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/download.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>
