
<h1><a name="News-ApacheShiroNews"></a>Apache Shiro News</h1>

<p>Stay up to date with the latest news on the Apache Shiro Security Framework</p>

<p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.

For more information on Shiro, please read the documentation.</p>

<p>Enjoy!</p>

<p>The Apache Shiro Team</p>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.6.0-released" href="#1.6.0-released">Apache Shiro 1.6.0 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.6.0. This is a feature release for 1.x.</p>

        <p>This release includes 3 issues resolved since the 1.5.3 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>Incorrect filterchainResolver.</li>
            <li>SecurityUtils.securityManager should be volatile.</li>
            <li>ArrayIndexOutOfBoundsException in Base64#decode.</li>
            <li>Add support for Global Filters.</li>
            <li>Dependency upgrade.</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12348623" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.5.3-released" href="#1.5.3-released">Apache Shiro 1.5.3 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.5.3. This is a feature release for 1.x.</p>

        <p>This release includes 3 issues resolved since the 1.5.2 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>INI parser does not properly handled backslashes at end of values.</li>
            <li>Regression in URI parsing in Shiro 1.5.2.</li>
            <li>SimplePrincipalMap and SimplePrincipalCollection throw different exceptions for the same problem.</li>
            <li>Dependency upgrade.</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12346916" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.5.2-released" href="#1.5.2-released">Apache Shiro 1.5.2 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.5.2. This is a feature release for 1.x.</p>

        <p>This release includes 3 issues resolved since the 1.5.1 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>Fixes authentication bypass issue: <a href="security-reports.html">CVE-2020-1957</a></li>
            <li>FirstSuccessfulStrategy will short circuit correctly now.</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12346483" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.5.1-released" href="#1.5.1-released">Apache Shiro 1.5.1 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.5.1. This is a feature release for 1.x.</p>

        <p>This release includes 5 issues resolved since the 1.5.0 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>DefaultCipherInstance is an alias which is not available in every JVM or JCA Provider.</li>
            <li>Bean reflection property failed with Enum values.</li>
            <li>Matching of / (root) is broken.</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12346483" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.5.0-released" href="#1.5.0-released">Apache Shiro 1.5.0 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.5.0. This is a feature release for 1.x.</p>

        <p>This release includes 52 issues resolved since the 1.4.2 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>Update to compiler Java 8 min.</li>
            <li>Validate Java 11 build.</li>
            <li>Dependency upgrade.</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12344991" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.4.2-released" href="#1.4.2-released">Apache Shiro 1.4.2 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.4.2. This is a feature release for 1.x.</p>

        <p>This release includes 1 issue resolved since the 1.4.1 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>Updates the default Cipher mode to GCM in AesCipherService (<a href="security-reports.html">CVE-2019-12422</a>)</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12345454" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.4.1-released" href="#1.4.1-released">Apache Shiro 1.4.1 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.4.1. This is a feature release for 1.x.</p>

        <p>This release includes 27 issues resolved since the 1.4.0 release and is available for Download now.</p>

        <p>Of Note:
        <ul>
            <li>Fix some OGSi and Apache Karaf feature issues.</li>
            <li>Refresh cached session in HTTP request after user logs out</li>
            <li>Upgrade to Spring 4.3.22.RELEASE</li>
            <li>Upgrade to Springboot 1.5.19.RELEASE</li>
            <li>Maven plugins upgrade</li>
        </ul>

        You can learn more on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12344826" target="_blank">Jira</a>
        </p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.4.0-RC2-released" href="#1.4.0-RC2-released">Apache Shiro 1.4.0-RC2 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.4.0-RC2. This is a feature release for 1.x.</p>

        <p>This release includes 15 issues resolved since the 1.3.2 release and is available for Download now.</p>

        <p>Of Note:
            <ul>
                <li>The core has been broken up into a fewer smaller modules (lang, crypto, config), but package names remain the same. Maven, Gradle, and Ivy users will NOT be effected.</li>
                <li>New <a href="https://github.com/apache/shiro/tree/shiro-root-1.4.0-RC2/support/spring-boot">modules</a> for Spring Boot</li>
                <li>New <a href="http://search.maven.org/#artifactdetails%7Corg.apache.shiro%7Cshiro-servlet-plugin%7C1.4.0-RC2%7Cjar">servlet fragment module</a></li>
                <li>New module for JAX-RS (based off <a href="https://github.com/silb/shiro-jersey">https://github.com/silb/shiro-jersey</a>)</li>
                <li>Guice 4 support</li>
                <li>Shiro.ini string interpolation</li>
            </ul>
        </p>

        <p>This release is an release candidate, so we encourage feedback on the new modules above.</p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>


<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.3.2-released" href="#1.3.2-released">Apache Shiro 1.3.2 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.3.2.</p>

        <p>This security release contains 1 fix since the 1.3.1 release.</p>

        <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6802">CVE-2016-6802</a>:
        <p>Apache Shiro before 1.3.2,  when using a non-root servlet context path,
        specifically crafted requests can be used to by pass some security servlet
        filters, resulting in unauthorized access.</p>

        <p>Release binaries (.jars) are also available through Maven Central and
        source bundles through Apache distribution mirrors.</p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.3.1-released" href="#1.3.1-released">Apache Shiro 1.3.1 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.3.1. This is a bug fix release for 1.3.x.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12338099&styleName=Text&projectId=12310950">2 issues resolved</a> since the 1.3.0 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors. </p>

        <p>For more information on <a href="documentation.html">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">

    <div class="logo-heading-block">
        <a class="blogHeading" id="1.3.0-released" href="#1.3.0-released">Apache Shiro 1.3.0 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.3.0. This is a feature release for 1.3.x.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12317961&styleName=Text&projectId=12310950">26 issues resolved</a> since the 1.2.6 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors. </p>

        <p>For more information on <a class="external-link" href="http://shiro.apache.org/documentation.html" rel="nofollow">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" id="1.2.6-released" href="#1.2.6-released">Apache Shiro 1.2.6 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.2.6. This is a bug fix release for 1.2.x.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12335836&projectId=12310950">2 bug fixes</a> since the 1.2.5 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors. </p>

        <p>For more information on <a class="external-link" href="http://shiro.apache.org/documentation.html" rel="nofollow">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" id="1.2.5-released" href="#1.2.5-released">Apache Shiro 1.2.5 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.2.5. This is a bug fix release for 1.2.x.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12332994">7 bug fixes</a> since the 1.2.4 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors. </p>

        <p>For more information on <a class="external-link" href="http://shiro.apache.org/documentation.html" rel="nofollow">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" id="1.2.4-released" href="#1.2.4-released">Apache Shiro 1.2.4 Released</a>
    </div>

    <div class="news-content">
        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.2.4. This is a bug fix release for 1.2.x.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12329682">5 bug fixes</a> since the 1.2.3 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>Release binaries (.jars) are also available through Maven Central and source bundles through Apache distribution mirrors. </p>

        <p>For more information on <a class="external-link" href="http://shiro.apache.org/documentation.html" rel="nofollow">Shiro, please read the documentation.</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2013/05/30/apache-shiro-122-released.html">Apache Shiro 1.2.2 Released</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on May 30, 2013</div>
    </div>

    <div class="news-content">
        <p>Dear Apache Shiro Community,</p>

        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.2.2.  This is the second bug fix point release after 1.2.0.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&version=12323469">18 bug fixes</a> since the 1.2.1 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>All binaries (.jars) are available in Maven Central already.  Please note that the Apache mirrors are still updating to reflect the source distribution, but some mirrors may not be updated yet.  If a mirror download link does not work, please try another or wait another 12 to 24 hours.</p>

        <p>For more information on Shiro 1.2, please read the "<a class="external-link" href="https://stormpath.com/blog/whats-new-apache-shiro-12" rel="nofollow">What's new in Apache Shiro 1.2?</a>" article or the previous <a class="external-link" href="2012/01/24/apache-shiro-120-released.html">1.2 release announcement</a>.</p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>

<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2012/07/29/apache-shiro-121-released.html">Apache Shiro 1.2.1 Released</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Jul 29, 2012</div>

    </div>

    <div class="news-content">
        <p>Dear Apache Shiro Community,</p>

        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.2.1.  This is the first bug fix point release after 1.2.0.</p>

        <p>This release includes <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&amp;version=12319511">11 bug fixes</a> since the 1.2.0 release and is available for <a href="download.html" title="Download">Download</a> now.</p>

        <p>All binaries (.jars) are available in Maven Central already.  Please note that the Apache mirrors are still updating to reflect the source distribution, but some mirrors may not be updated yet.  If a mirror download link does not work, please try another or wait another 12 to 24 hours.</p>

        <p>For more information on Shiro 1.2, please read the "<a class="external-link" href="https://stormpath.com/blog/whats-new-apache-shiro-12" rel="nofollow">What's new in Apache Shiro 1.2?</a>" article or the previous <a class="external-link" href="2012/01/24/apache-shiro-120-released.html">1.2 release announcement</a>.</p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="https://stormpath.com/blog/whats-new-apache-shiro-12">What's New in Apache Shiro 1.2?</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Mar 13, 2012</div>
    </div>

    <div class="news-content">
        <p>Here's an article covering some of the main features and enhancements in Apache Shiro 1.2:</p>

        <p><a class="external-link" href="https://stormpath.com/blog/whats-new-apache-shiro-12" rel="nofollow">https://stormpath.com/blog/whats-new-apache-shiro-12</a></p>
    </div>
</div>


<div class="blog-post-listing">

    <span class="blogHeading"><a class="blogHeading" href="2012/01/24/apache-shiro-120-released.html">Apache Shiro 1.2.0 Released!</a></span>
    <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Jan 24, 2012</div>


    <div class="news-content">
        <p>Dear Apache Shiro Community,</p>

        <p>The Shiro team is pleased to announce the release of Apache Shiro version 1.2.0!</p>

        <p>This release includes a number of bug fixes and new features since the&#160;1.1.0 release. &#160;The 1.2.0 release is available from <a href="download.html" title="Download">the Download page</a>.</p>

        <p>All binaries (.jars) are available in Maven Central already. &#160;Please&#160;note that the Apache mirrors are still updating to reflect the source&#160;distribution, but some mirrors may not be updated yet. &#160;If a mirror&#160;download link does not work, please try another or wait another 12 to&#160;24 hours.</p>

        <h3><a name="ApacheShiro1.2.0Released%21-NewFeatures"></a>New Features</h3>

        <ul><li>The ability to disable sessions per filter chain or entirely for an&#160;application.</li><li>Servlet Context Listener initialization in web apps (to allow&#160;components to utilize Shiro before Filter initialization)</li><li>A command line program to securely hash passwords (or any url, file&#160;or stream input for that matter).</li><li>New secure password hash formats that adhere to Modular Crypt Format&#160;conventions. &#160;These secure password hashes can be computed with the&#160;above named command line program and saved in text config (e.g.&#160;shiro.ini) directly. &#160;Plaintext passwords should never be stored. &#160;For&#160;those familiar with the Apache HTTPD passwd program, this achieves the&#160;same benefits.</li><li>A new LogoutFilter, as many apps don't need to show a view during&#160;logout (just logout and redirect to some known location).</li><li>Shiro filters can be enabled or disabled without removing them from&#160;the filter chain - useful in development (e.g. turn ssl requirement&#160;off in dev, but keep it on in production).</li><li>A lot of work has gone into making secure password hash storage and&#160;comparison a much simpler task in Shiro, focused around the new&#160;concept of a PasswordService. &#160;You can use a PasswordService directly&#160;in your application code to hash passwords securely. &#160;You can then&#160;configure a PasswordMatcher on your Realm(s) to use the same&#160;PasswordService for password comparisons. &#160;See the PasswordService&#160;JavaDoc for example .ini configuration:
            <ul><li>PasswordService:&#160;<a class="external-link" href="static/current/apidocs/org/apache/shiro/authc/credential/PasswordService.html">static/current/apidocs/org/apache/shiro/authc/credential/PasswordService.html</a></li><li>PasswordMatcher:&#160;<a class="external-link" href="static/current/apidocs/org/apache/shiro/authc/credential/PasswordMatcher.html">static/current/apidocs/org/apache/shiro/authc/credential/PasswordMatcher.html</a></li></ul>
            </li></ul>


        <p>More complete PasswordService and related config documentation will be&#160;added to the Shiro website in the next few days - it was better to&#160;release now for the many who are waiting on the release, and follow up&#160;with this part of the documentation shortly.</p>
        <ul><li>Three new 'support' modules:
            <ul><li>Apache Karaf features (shiro-features-1.2.0.jar)</li><li>Google Guice:&#160;<a class="external-link" href="guice.html">guice.html</a></li><li>Jasig CAS:&#160;<a class="external-link" href="cas.html">cas.html</a></li></ul>
            </li></ul>


        <p>And even more new features! &#160;See the 'Resolved Issues' below for a&#160;complete list.</p>

        <h3><a name="ApacheShiro1.2.0Released%21-Backwardsincompatibleorpotentialbreakingchanges"></a>Backwards-incompatible or potential breaking changes</h3>

        <p>There are only a few small cases where breakage could occur - please&#160;view the release notes to ensure you mitigate any potential breaking&#160;change - particularly if you are using the SecureRandomNumberGenerator<br clear="none">
        or Shiro's Block Cipher Services (AES, Blowfish):</p>

        <p><a class="external-link" href="https://raw.githubusercontent.com/apache/shiro/shiro-root-1.2.0/RELEASE-NOTES">https://raw.githubusercontent.com/apache/shiro/shiro-root-1.2.0/RELEASE-NOTES</a></p>

        <h3><a name="ApacheShiro1.2.0Released%21-ResolvedIssues"></a>Resolved Issues</h3>

        <p>Jira resolved issue report:</p>

        <p><a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&amp;version=12315478">https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310950&amp;version=12315478</a></p>

        <p>Enjoy!</p>

        <p>The Apache Shiro Team</p>
    </div>
</div>


<div class="blog-post-listing">
        <div class="logo-heading-block">

            <a class="blogHeading" href="2011/06/30/apache-shiro-login-demo.html">Apache Shiro Login Demo</a>
            <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Jun 30, 2011</div>

        </div>

    <div class="news-content">
        <p><a class="external-link" href="http://raibledesigns.com/" rel="nofollow">Matt Raible</a> has posted a really nice blog article and video demonstrating a login use case with Apache Shiro.  Check out the <a class="external-link" href="http://raibledesigns.com/rd/entry/java_web_application_security_part2" rel="nofollow">Java Web Application Security - Part III: Apache Shiro Login Demo</a> blog post and the video:</p>


        <object width="480" height="390"><param valuetype="data" name="movie" value="http://www.youtube.com/v/4LD4mF5ex2U?version=3&amp;hl=en_US&amp;rel=0"><param valuetype="data" name="allowFullScreen" value="true"><param valuetype="data" name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/4LD4mF5ex2U?version=3&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"></embed></object>

    </div>
</div>


<div class="blog-post-listing">
        <div class="logo-heading-block">
            <a class="blogHeading" href="2011/05/24/the-new-rbac-resource-based-access-control.html">The New RBAC - Resource-Based Access Control</a>
            <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on May 24, 2011</div>
        </div>

    <div class="news-content">
        <p>Hi Shiro community,</p>

        <p>The following article helps explain the differences in role-based vs resource-based access control and why Shiro's permission construct (which is based on resources) can be much better for an application:</p>

        <p><a class="external-link" href="https://stormpath.com/blog/new-rbac-resource-based-access-control" rel="nofollow">The New RBAC: Resource-Based Access Control</a></p>
    </div>
</div>


<div class="blog-post-listing">
        <div class="logo-heading-block">
            <a class="blogHeading" href="2011/03/14/infoq-article-on-apache-shiro.html">InfoQ article on Apache Shiro</a>
            <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Mar 14, 2011</div>
        </div>

    <div class="news-content">
        <p><a class="external-link" href="https://www.infoq.com/articles/apache-shiro" rel="nofollow">https://www.infoq.com/articles/apache-shiro</a></p>
    </div>
</div>


<div class="blog-post-listing">
        <div class="logo-heading-block">
            <a class="blogHeading" href="2011/02/28/java-authorization-guide-with-apache-shiro-posted.html">Java Authorization Guide with Apache Shiro posted</a>
            <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/alex">Alex Salazar</a> posted on Feb 28, 2011</div>
        </div>

    <div class="news-content">
        <p>In our effort to improve the documentation you need to get started with Shiro, we've written a quick <a href="java-authorization-guide.html" title="Java Authorization Guide">Java Authorization Guide</a> for your review.  Check out and tell us what you think.  And if you haven't already, check out our previous post, the <a href="java-authentication-guide.html" title="Java Authentication Guide">Java Authentication Guide</a>.</p>

    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2011/02/10/apache-shiro-integration-for-grails-113-released.html">Apache Shiro Integration for Grails 1.1.3 released</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/alex">Alex Salazar</a> posted on Feb 09, 2011</div>
    </div>

    <div class="news-content">
        <p>Secure your Grails application quickly and easily using the Apache Shiro security framework. Although easy to get started with, this framework gives you a great deal of flexibility and will support your application as it grows.</p>

        <p><a class="external-link" href="https://grails.org/plugin/shiro" rel="nofollow">https://grails.org/plugin/shiro</a></p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2011/01/13/apache-shiro-support-for-mule.html">Apache Shiro Support for Mule</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/alex">Alex Salazar</a> posted on Jan 13, 2011</div>
    </div>

    <div class="news-content">
        <p>Mule now has integration with Apache Shiro.  Thanks to Dan Diephouse at <a class="external-link" href="https://developer.mulesoft.com" rel="nofollow">MuleSoft</a> for the great blog post.  </p>

        <p><a class="external-link" href="http://blogs.mulesoft.com/dev/mule-dev/apache-shiro-support-for-mule/" rel="nofollow">http://blogs.mulesoft.com/dev/mule-dev/apache-shiro-support-for-mule/</a></p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2011/01/06/apache-shiro-video-and-slide-from-sf-jug-presentation.html">Apache Shiro Video and Slide from SF JUG Presentation</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/alex">Alex Salazar</a> posted on Jan 06, 2011</div>
    </div>

    <div class="news-content">
        <p>Check out the video from the San Francisco Java User Group presentation on Apache Shiro.</p>

        <h2><a name="ApacheShiroVideoandSlidefromSFJUGPresentation-Video"></a>Video</h2>

        <object width="640" height="385"><param valuetype="data" name="movie" value="http://www.youtube.com/v/5ZepGFzYHpE?fs=1&amp;hl=en_US"><param valuetype="data" name="allowFullScreen" value="true"><param valuetype="data" name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/5ZepGFzYHpE?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>

        <p>Courtesy of Aleksandar and Max at the <a class="external-link" href="http://www.sfjava.org/" rel="nofollow">SF JUG</a></p>

    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2010/11/03/apache-shiro-110-released.html">Apache Shiro 1.1.0 Released</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Nov 03, 2010</div>
    </div>

    <div class="news-content">
        <p>Dear Apache Shiro Community,</p>

        <p>We are proud and excited to offer Apache Shiro's first release as an Apache Top Level Project, Apache Shiro version 1.1.0.</p>

        <p>This release includes a number of bug fixes, new features and one important security vulnerability fix - it is recommended that users upgrade to 1.1.0 as soon as possible.</p>

        <p>Version 1.1.0 is available immediately for download <a href="download.html" title="Download">here</a> accompanied by <a href="documentation.html" title="Documentation">associated documentation</a> and <a class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12314742&amp;styleName=Html&amp;projectId=12310950">Release Notes</a>.</p>

        <p>All binaries are available in Maven Central already.  Please note that most of the Apache mirrors have been updated to reflect the source distribution, but some mirrors may not be updated yet.  If a mirror download link does not work, please try another or wait another 12 to 24 hours.</p>

        <p>Enjoy!</p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2010/09/24/apache-shiro-becomes-an-apache-top-level-project.html">Apache Shiro becomes an Apache Top Level Project</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Sep 24, 2010</div>
    </div>

    <div class="news-content">
        <p>On Wednesday, September 22nd 2010, the Apache Software Foundation Board voted unanimously to accept Apache Shiro's graduation out of the Incubator and to become a Apache Top Level Project.</p>

        <p>Many thanks to the entire community for the continued growth and support, and especially to our Mentors, for helping us navigate the project through the incubation process.  Everything is much appreciated and it has been well worth it.</p>

        <p>Next steps:  It will take us a bit of time to migrate our infrastructure to non-Incubator resources (shiro.apache.org subdomain, Subversion move, etc), so please stay tuned.  Hopefully that can be done in the next two weeks.  Shortly thereafter, we hope to release Shiro 1.1.</p>

        <p>Thanks again to all, and please keep contributing to the project and the mailing lists to continually better the project for everyone!</p>

        <p>Best regards,</p>

        <p>Les</p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <a class="blogHeading" href="2010/09/20/san-francisco-jug-presentation.html">San Francisco JUG presentation</a>
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Sep 20, 2010</div>
    </div>

    <div class="news-content">
        <p>On 12 October 2010 at 6:30 pm PDT, Les Hazlewood will present <a class="external-link" href="http://www.sfjava.org/calendar/13539905/" rel="nofollow">Super Simple Application Security with Apache Shiro</a> to the San Francisco Java User Group.  Please RSVP if you wish to attend - seats are limited!</p>
    </div>
    </div>


<div class="blog-post-listing">
        <div class="logo-heading-block">
            <a class="blogHeading" href="2010/09/14/ibm-developerworks-introduction-to-apache-shiro.html">IBM DeveloperWorks - Introduction to Apache Shiro</a>
            <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Sep 14, 2010</div>
        </div>

    <div class="news-content">
        <p>Nathan Good wrote <a class="external-link" href="http://www.ibm.com/developerworks/web/library/wa-apacheshiro/" rel="nofollow">an article</a> introducing some of Apache Shiro's capabilities.  Thanks Nathan!</p>
    </div>
</div>


<div class="blog-post-listing">
    <div class="logo-heading-block">
        <div class="page-metadata"><a class="url fn news-userlink" href="https://stormpath.com/blog/author/les">Les Hazlewood</a> posted on Jun 01, 2010</div>
        <a class="blogHeading" href="2010/06/01/sdforum-java-sig-apache-shiro-presentation.html">SDForum Java SIG Apache Shiro Presentation</a>

    </div>

    <div class="news-content">
        <p>Tonight, 1 June 2010, Les Hazlewood <a class="external-link" href="http://www.sdforum.org/index.cfm?fuseaction=Calendar.eventDetail&amp;eventID=13671&amp;pageId=471" rel="nofollow">will present</a> Apache Shiro to the SDForum Java SIG in Palo Alto, California.  Please come if you can!</p>
    </div>
</div>

<input type="hidden" id="ghEditPage" value="news.html"></input>
