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