Author: bdemers
Date: Mon Oct 24 14:33:52 2016
New Revision: 1766414

URL: http://svn.apache.org/viewvc?rev=1766414&view=rev
Log:
converted html to md

Modified:
    shiro/site/publish/10-minute-tutorial.html
    shiro/site/publish/about.html
    shiro/site/publish/adoption.html
    shiro/site/publish/architecture.html
    shiro/site/publish/articles.html
    shiro/site/publish/authentication-guide.html
    shiro/site/publish/authentication.html
    shiro/site/publish/authorization.html
    shiro/site/publish/banner.html
    shiro/site/publish/cachemanager.html
    shiro/site/publish/caching.html
    shiro/site/publish/cas.html
    shiro/site/publish/codec.html
    shiro/site/publish/command-line-hasher.html
    shiro/site/publish/commercial-support.html
    shiro/site/publish/configuration.html
    shiro/site/publish/contribute.html
    shiro/site/publish/core.html
    shiro/site/publish/cryptography-features.html
    shiro/site/publish/cryptography.html
    shiro/site/publish/developer-resources.html
    shiro/site/publish/developers.html
    shiro/site/publish/documentation-help-block.html
    shiro/site/publish/documentation.html
    shiro/site/publish/events.html
    shiro/site/publish/features-overview.html
    shiro/site/publish/forums.html
    shiro/site/publish/getting-started-block.html
    shiro/site/publish/graduation-resolution.html
    shiro/site/publish/guice.html
    shiro/site/publish/guides.html
    shiro/site/publish/how-to-contribute.html
    shiro/site/publish/inclusionslibrary.html
    shiro/site/publish/introduction.html
    shiro/site/publish/issues.html
    shiro/site/publish/java-annotations-list.html
    shiro/site/publish/java-annotations.html
    shiro/site/publish/java-authentication-guide.html
    shiro/site/publish/java-authorization-guide.html
    shiro/site/publish/java-cryptography-guide.html
    shiro/site/publish/jsp-tag-library.html
    shiro/site/publish/license.html
    shiro/site/publish/mailing-lists.html
    shiro/site/publish/navigation.html
    shiro/site/publish/overview.html
    shiro/site/publish/permissions.html
    shiro/site/publish/powered-by-shiro.html
    shiro/site/publish/privacy-policy.html
    shiro/site/publish/realm.html
    shiro/site/publish/reference.html
    shiro/site/publish/securitymanager.html
    shiro/site/publish/session-management-features.html
    shiro/site/publish/session-management.html
    shiro/site/publish/sessionmanager.html
    shiro/site/publish/spring.html
    shiro/site/publish/subject.html
    shiro/site/publish/team.html
    shiro/site/publish/terminology.html
    shiro/site/publish/testing.html
    shiro/site/publish/tools.html
    shiro/site/publish/tutorial.html
    shiro/site/publish/version-2-brainstorming.html
    shiro/site/publish/web.html
    shiro/site/publish/what-is-shiro.html
    shiro/site/publish/wiki-todos.html

Modified: shiro/site/publish/10-minute-tutorial.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/10-minute-tutorial.html?rev=1766414&r1=1766413&r2=1766414&view=diff
==============================================================================
--- shiro/site/publish/10-minute-tutorial.html (original)
+++ shiro/site/publish/10-minute-tutorial.html Mon Oct 24 14:33:52 2016
@@ -78,10 +78,7 @@
 
         <div id="content">
 
-            
-
-<h1><a name="10MinuteTutorial-10MinuteTutorialonApacheShiro"></a>10 Minute 
Tutorial on Apache Shiro</h1>
-
+            <h1><a 
name="10MinuteTutorial-10MinuteTutorialonApacheShiro"></a>10 Minute Tutorial on 
Apache Shiro</h1>
 <div class="addthis_toolbox addthis_default_style">
     <a class="addthis_button_compact" 
href="http://www.addthis.com/bookmark.php?v=250&amp;pubid=ra-4d66ef016022c3bd";>Share</a>
     <span class="addthis_separator">|</span>
@@ -92,38 +89,18 @@
 </div>
 <script type="text/javascript">var addthis_config = {"data_track_clickback": 
true};</script>
 <script type="text/javascript" 
src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4d66ef016022c3bd";></script>
-
-
-<h2><a name="10MinuteTutorial-Introduction"></a>Introduction</h2>
-
-<p>Welcome to Apache Shiro's 10 Minute Tutoral! </p>
-
-<p>By going through this quick and simple tutorial you should fully understand 
how a developer uses Shiro in their
-    application. And you should be able to do it in under 10 minutes.</p>
-
-<h2><a name="10MinuteTutorial-Overview"></a>Overview</h2>
-
+<a name="10MinuteTutorial-Introduction"></a>
+<h2><a href="#introduction" name="introduction">Introduction</a></h2>
+<p>Welcome to Apache Shiro&rsquo;s 10 Minute Tutoral!</p>
+<p>By going through this quick and simple tutorial you should fully understand 
how a developer uses Shiro in their application. And you should be able to do 
it in under 10 minutes.</p>
+<a name="10MinuteTutorial-Overview"></a>
+<h2><a href="#overview" name="overview">Overview</a></h2>
 <p>What is Apache Shiro?</p>
-
-<p>Apache Shiro is a powerful and easy to use Java security framework that 
offers developers an intuitive yet
-    comprehensive solution to authentication, authorization, cryptography, and 
session management.</p>
-
-<p>In practical terms, it achieves to manage all facets of your application's 
security, while keeping out of the way as
-    much as possible. It is built on sound interface-driven design and OO 
principles, enabling custom behavior wherever
-    you can imagine it. But with sensible defaults for everything, it is as 
"hands off" as application security can be.
-    At least that's what we strive for.</p>
-
+<p>Apache Shiro is a powerful and easy to use Java security framework that 
offers developers an intuitive yet comprehensive solution to authentication, 
authorization, cryptography, and session management.</p>
+<p>In practical terms, it achieves to manage all facets of your 
application&rsquo;s security, while keeping out of the way as much as possible. 
It is built on sound interface-driven design and OO principles, enabling custom 
behavior wherever you can imagine it. But with sensible defaults for 
everything, it is as &ldquo;hands off&rdquo; as application security can be. At 
least that&rsquo;s what we strive for.</p>
 <p>What can Apache Shiro do?</p>
-
-<p>A lot <img align="middle" class="emoticon" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/smile.png";
-              height="20" width="20" alt="" border="0">. But we don't want to 
bloat the QuickStart. Please check out our
-    <a href="features.html" title="Features">Features</a> page if you'd like 
to see what it can do for you. Also, if
-    you're curious on how we got started and why we exist, please see the <a 
href="what-is-shiro.html"
-                                                                             
title="What is Shiro">Shiro History and
-        Mission</a> page.</p>
-
-<p>Ok. Now let's actually do something!</p>
-
+<p>A lot <img 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/smile.png"; />. 
But we don&rsquo;t want to bloat the QuickStart. Please check out our <a 
href="features.html" title="Features">Features</a> page if you&rsquo;d like to 
see what it can do for you. Also, if you&rsquo;re curious on how we got started 
and why we exist, please see the <a href="what-is-shiro.html" title="What is 
Shiro">Shiro History and Mission</a> page.</p>
+<p>Ok. Now let&rsquo;s actually do something!</p>
 <div class="panelMacro">
     <table class="infoMacro">
         <colgroup span="1">
@@ -141,167 +118,79 @@
             <td colspan="1" rowspan="1">
                 <b>Note</b>
                 <br clear="none">
-                Shiro can be run in any environment, from the simplest command 
line application to the biggest enterprise web and clustered applications, but 
we'll use the simplest possible example in a simple <tt>main</tt> method for 
this QuickStart so you can get a feel for the API.
+                Shiro can be run in any environment, from the simplest command 
line application to the biggest enterprise web and clustered applications, but 
we'll use the simplest possible example in a simple `main` method for this 
QuickStart so you can get a feel for the API.
             </td>
         </tr>
         </tbody>
     </table>
 </div>
-
-<h2><a name="10MinuteTutorial-Download"></a>Download</h2>
-
+<a name="10MinuteTutorial-Download"></a>
+<h2><a href="#download" name="download">Download</a></h2>
 <ol>
-    <li>Ensure you have JDK 1.6+ and Maven 3.0.3+ installed.</li>
-    <li>Download the lastest "Source Code Distribution" from the <a 
href="download.html" title="Download">Download</a>
-        page. In this example, we're using the 1.3.2 release distribution.
-    </li>
-    <li>Unzip the source package:
-        <div class="code panel" style="border-width: 1px;">
-            <div class="codeContent panelContent">
-<pre class="code-java">
-&gt; unzip shiro-root-1.3.2-source-release.zip
-</pre>
-            </div>
-        </div>
-    </li>
-    <li>Enter the quickstart directory:
-        <div class="code panel" style="border-width: 1px;">
-            <div class="codeContent panelContent">
-<pre class="code-java">
-&gt; cd shiro-root-1.3.2/samples/quickstart
-</pre>
-            </div>
-        </div>
-    </li>
-    <li>Run the QuickStart:
-        <div class="code panel" style="border-width: 1px;">
-            <div class="codeContent panelContent">
-<pre class="code-java">
-&gt; mvn compile exec:java
-</pre>
-            </div>
-        </div>
-        <p>This target will just print out some log messages to let you know 
what is going on and then exit. While
-            reading this quickstart, feel free to look at the code found under 
<tt>samples/quickstart/src/main/java/Quickstart.java</tt>.
-            Change that file and run the above <tt>mvn compile exec:java</tt> 
command as often as you like.</p></li>
+  <li>Ensure you have JDK 1.6+ and Maven 3.0.3+ installed.</li>
+  <li>Download the lastest &ldquo;Source Code Distribution&rdquo; from the <a 
href="download.html" title="Download">Download</a> page. In this example, 
we&rsquo;re using the 1.3.2 release distribution.</li>
+  <li>Unzip the source package:
+    <pre><code class="bash">$ unzip shiro-root-1.3.2-source-release.zip
+</code></pre>
+  </li>
+  <li>
+    <p>Enter the quickstart directory:</p>
+    <pre><code class="bash">$ cd shiro-root-1.3.2/samples/quickstart
+</code></pre>
+  </li>
+  <li>
+    <p>Run the QuickStart:</p>
+    <pre><code class="bash">$ mvn compile exec:java
+</code></pre>
+  </li>
 </ol>
-
-
-<h2><a name="10MinuteTutorial-Quickstart.java"></a>Quickstart.java</h2>
-
-<p>The <tt>Quickstart.java</tt> file referenced above contains all the code 
that will get you familiar with the API. Now
-    lets break it down in chunks here so you can easily understand what is 
going on.</p>
-
+<p>This target will just print out some log messages to let you know what is 
going on and then exit. While reading this quickstart, feel free to look at the 
code found under <code>samples/quickstart/src/main/java/Quickstart.java</code>. 
Change that file and run the above <code>mvn compile exec:java</code> command 
as often as you like.</p>
+<a name="10MinuteTutorial-Quickstart.java"></a>
+<h2>Quickstart.java</h2>
+<p>The <code>Quickstart.java</code> file referenced above contains all the 
code that will get you familiar with the API. Now lets break it down in chunks 
here so you can easily understand what is going on.</p>
 <p>In almost all environments, you can obtain the currently executing user via 
the following call:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-Subject currentUser = SecurityUtils.getSubject();
-</pre>
-    </div>
-</div>
-
-<p>Using <tt><a class="external-link"
-                
href="static/current/apidocs/org/apache/shiro/SecurityUtils.html">SecurityUtils</a>.<a
-        class="external-link" 
href="static/current/apidocs/org/apache/shiro/SecurityUtils.html#getSubject()">getSubject()</a></tt>,
-    we can obtain the currently executing <tt><a class="external-link"
-                                                 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html">Subject</a></tt>.
-    A <em>Subject</em> is just a security-specific "view" of an application 
User. We actually wanted to call it 'User'
-    since that "just makes sense", but we decided against it: too many 
applications have existing APIs that already have
-    their own User classes/frameworks, and we didn't want to conflict with 
those. Also, in the security world, the term
-    <tt>Subject</tt> is actually the recognized nomenclature. Ok, moving 
on...</p>
-
-<p>The <tt>getSubject()</tt> call in a standalone application might return a 
<tt>Subject</tt> based on user data in an
-    application-specific location, and in a server environment (e.g. web app), 
it acquires the <tt>Subject</tt> based on
-    user data associated with current thread or incoming request.</p>
-
-<p>Now that you have a <tt>Subject</tt>, what can you do with it?</p>
-
-<p>If you want to make things available to the user during their current 
session with the application, you can get their
-    session:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-Session session = currentUser.getSession();
-session.setAttribute( <span class="code-quote">"someKey"</span>, <span 
class="code-quote">"aValue"</span> );
-</pre>
-    </div>
-</div>
-
-<p>The <tt>Session</tt> is a Shiro-specific instance that provides most of 
what you're used to with regular HttpSessions
-    but with some extra goodies and one <b>big</b> difference: it does not 
require an HTTP environment!</p>
-
-<p>If deploying inside a web application, by default the <tt>Session</tt> will 
be <tt>HttpSession</tt> based. But, in a
-    non-web environment, like this simple Quickstart, Shiro will automatically 
use its Enterprise Session Management by
-    default. This means you get to use the same API in your applications, in 
any tier, regardless of deployment
-    environment. This opens a whole new world of applications since any 
application requiring sessions does not need to
-    be forced to use the <tt>HttpSession</tt> or EJB Stateful Session Beans. 
And, any client technology can now share
-    session data.</p>
-
-<p>So now you can acquire a <tt>Subject</tt> and their <tt>Session</tt>. What 
about the <em>really</em> useful stuff
-    like checking if they are allowed to do things, like checking against 
roles and permissions?</p>
-
-<p>Well, we can only do those checks for a known user. Our <tt>Subject</tt> 
instance above represents the current user,
-    but <em>who</em> is the current user? Well, they're anonymous - that is, 
until they log in at least once. So, let's
-    do that:</p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-<span class="code-keyword">if</span> ( !currentUser.isAuthenticated() ) {
-    <span class="code-comment">//collect user principals and credentials in a 
gui specific manner 
-</span>    <span class="code-comment">//such as username/password html form, 
X509 certificate, OpenID, etc.
-</span>    <span class="code-comment">//We'll use the username/password 
example here since it is the most common.
-</span>    <span class="code-comment">//(<span class="code-keyword">do</span> 
you know what movie <span
-        class="code-keyword">this</span> is from? ;)
-</span>    UsernamePasswordToken token = <span class="code-keyword">new</span> 
UsernamePasswordToken(<span
-        class="code-quote">"lonestarr"</span>, <span 
class="code-quote">"vespa"</span>);
-    <span class="code-comment">//<span class="code-keyword">this</span> is all 
you have to <span
-            class="code-keyword">do</span> to support 'remember me' (no config 
- built in!):
-</span>    token.setRememberMe(<span class="code-keyword">true</span>);
+<pre><code class="java">Subject currentUser = SecurityUtils.getSubject();
+</code></pre>
+<p>Using <a 
href="static/current/apidocs/org/apache/shiro/SecurityUtils.html"><code>SecurityUtils</code></a>.[getSubject()](static/current/apidocs/org/apache/shiro/SecurityUtils.html#getSubject()),
 we can obtain the currently executing <a 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html"><code>Subject</code></a>.
 A <em>Subject</em> is just a security-specific &ldquo;view&rdquo; of an 
application User. We actually wanted to call it &lsquo;User&rsquo; since that 
&ldquo;just makes sense&rdquo;, but we decided against it: too many 
applications have existing APIs that already have their own User 
classes/frameworks, and we didn&rsquo;t want to conflict with those. Also, in 
the security world, the term <code>Subject</code> is actually the recognized 
nomenclature. Ok, moving on&hellip;</p>
+<p>The <code>getSubject()</code> call in a standalone application might return 
a <code>Subject</code> based on user data in an application-specific location, 
and in a server environment (e.g. web app), it acquires the 
<code>Subject</code> based on user data associated with current thread or 
incoming request.</p>
+<p>Now that you have a <code>Subject</code>, what can you do with it?</p>
+<p>If you want to make things available to the user during their current 
session with the application, you can get their session:</p>
+<pre><code class="java">Session session = currentUser.getSession();
+session.setAttribute( &quot;someKey&quot;, &quot;aValue&quot; );
+</code></pre>
+<p>The <code>Session</code> is a Shiro-specific instance that provides most of 
what you&rsquo;re used to with regular HttpSessions but with some extra goodies 
and one <strong>big</strong> difference: it does not require an HTTP 
environment!</p>
+<p>If deploying inside a web application, by default the <code>Session</code> 
will be <code>HttpSession</code> based. But, in a non-web environment, like 
this simple Quickstart, Shiro will automatically use its Enterprise Session 
Management by default. This means you get to use the same API in your 
applications, in any tier, regardless of deployment environment. This opens a 
whole new world of applications since any application requiring sessions does 
not need to be forced to use the <code>HttpSession</code> or EJB Stateful 
Session Beans. And, any client technology can now share session data.</p>
+<p>So now you can acquire a <code>Subject</code> and their 
<code>Session</code>. What about the <em>really</em> useful stuff like checking 
if they are allowed to do things, like checking against roles and 
permissions?</p>
+<p>Well, we can only do those checks for a known user. Our 
<code>Subject</code> instance above represents the current user, but 
<em>who</em> is the current user? Well, they&rsquo;re anonymous - that is, 
until they log in at least once. So, let&rsquo;s do that:</p>
+<pre><code class="java">if ( !currentUser.isAuthenticated() ) {
+    //collect user principals and credentials in a gui specific manner
+    //such as username/password html form, X509 certificate, OpenID, etc.
+    //We&#39;ll use the username/password example here since it is the most 
common.
+    //(do you know what movie this is from? ;)
+    UsernamePasswordToken token = new 
UsernamePasswordToken(&quot;lonestarr&quot;, &quot;vespa&quot;);
+    //this is all you have to do to support &#39;remember me&#39; (no config - 
built in!):
+    token.setRememberMe(true);
     currentUser.login(token);
 }
-</pre>
-    </div>
-</div>
-
-<p>That's it! It couldn't be easier.</p>
-
-<p>But what if their login attempt fails? You can catch all sorts of specific 
exceptions that tell you exactly what
-    happened and allows you to handle and react accordingly:</p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-<span class="code-keyword">try</span> {
+</code></pre>
+<p>That&rsquo;s it! It couldn&rsquo;t be easier.</p>
+<p>But what if their login attempt fails? You can catch all sorts of specific 
exceptions that tell you exactly what happened and allows you to handle and 
react accordingly:</p>
+<pre><code class="java">try {
     currentUser.login( token );
-    <span class="code-comment">//<span class="code-keyword">if</span> no 
exception, that's it, we're done!
-</span>} <span class="code-keyword">catch</span> ( UnknownAccountException uae 
) {
-    <span class="code-comment">//username wasn't in the system, show them an 
error message?
-</span>} <span class="code-keyword">catch</span> ( 
IncorrectCredentialsException ice ) {
-    <span class="code-comment">//password didn't match, <span 
class="code-keyword">try</span> again?
-</span>} <span class="code-keyword">catch</span> ( LockedAccountException lae 
) {
-    <span class="code-comment">//account <span class="code-keyword">for</span> 
that username is locked - can't login.  Show them a message?
-</span>} 
-    ... more types exceptions to check <span class="code-keyword">if</span> 
you want ...
-} <span class="code-keyword">catch</span> ( AuthenticationException ae ) {
-    <span class="code-comment">//unexpected condition - error?
-</span>}
-</pre>
-    </div>
-</div>
-
-<p>There are many different types of exceptions you can check, or throw your 
own for custom conditions Shiro might not
-    account for. See the <a class="external-link"
-                            
href="static/current/apidocs/org/apache/shiro/authc/AuthenticationException.html">AuthenticationException
-        JavaDoc</a> for more. </p>
-
+    //if no exception, that&#39;s it, we&#39;re done!
+} catch ( UnknownAccountException uae ) {
+    //username wasn&#39;t in the system, show them an error message?
+} catch ( IncorrectCredentialsException ice ) {
+    //password didn&#39;t match, try again?
+} catch ( LockedAccountException lae ) {
+    //account for that username is locked - can&#39;t login.  Show them a 
message?
+}
+    ... more types exceptions to check if you want ...
+} catch ( AuthenticationException ae ) {
+    //unexpected condition - error?
+}
+</code></pre>
+<p>There are many different types of exceptions you can check, or throw your 
own for custom conditions Shiro might not account for. See the <a 
href="static/current/apidocs/org/apache/shiro/authc/AuthenticationException.html">AuthenticationException
 JavaDoc</a> for more.</p>
 <div class="panelMacro">
     <table class="tipMacro">
         <colgroup span="1">
@@ -321,109 +210,41 @@ session.setAttribute( <span class="code-
         </tbody>
     </table>
 </div>
-
 <p>Ok, so by now, we have a logged in user. What else can we do?</p>
-
-<p>Let's say who they are:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-<span class="code-comment">//print their identifying principal (in <span 
class="code-keyword">this</span> <span
-        class="code-keyword">case</span>, a username):
-</span>log.info( <span class="code-quote">"User ["</span> + 
currentUser.getPrincipal() + <span class="code-quote">"] logged in 
successfully."</span> );
-</pre>
-    </div>
-</div>
-
+<p>Let&rsquo;s say who they are:</p>
+<pre><code class="java">//print their identifying principal (in this case, a 
username): 
+log.info( &quot;User [&quot; + currentUser.getPrincipal() + &quot;] logged in 
successfully.&quot; );
+</code></pre>
 <p>We can also test to see if they have specific role or not:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-<span class="code-keyword">if</span> ( currentUser.hasRole( <span 
class="code-quote">"schwartz"</span> ) ) {
-    log.info(<span class="code-quote">"May the Schwartz be with you!"</span> );
-} <span class="code-keyword">else</span> {
-    log.info( <span class="code-quote">"Hello, mere mortal."</span> );
+<pre><code class="java">if ( currentUser.hasRole( &quot;schwartz&quot; ) ) {
+    log.info(&quot;May the Schwartz be with you!&quot; );
+} else {
+    log.info( &quot;Hello, mere mortal.&quot; );
 }
-</pre>
-    </div>
-</div>
-
+</code></pre>
 <p>We can also see if they have a permission to act on a certain type of 
entity:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-<span class="code-keyword">if</span> ( currentUser.isPermitted( <span 
class="code-quote">"lightsaber:weild"</span> ) ) {
-    log.info(<span class="code-quote">"You may use a lightsaber ring.  Use it 
wisely."</span>);
-} <span class="code-keyword">else</span> {
-    log.info(<span class="code-quote">"Sorry, lightsaber rings are <span 
class="code-keyword">for</span> schwartz masters only."</span>);
+<pre><code class="java">if ( currentUser.isPermitted( 
&quot;lightsaber:weild&quot; ) ) {
+    log.info(&quot;You may use a lightsaber ring.  Use it wisely.&quot;);
+} else {
+    log.info(&quot;Sorry, lightsaber rings are for schwartz masters 
only.&quot;);
 }
-</pre>
-    </div>
-</div>
-
-<p>Also, we can perform an extremely powerful <em>instance-level</em> 
permission check - the ability to see if the user
-    has the ability to access a specific instance of a type:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-<span class="code-keyword">if</span> ( currentUser.isPermitted( <span 
class="code-quote">"winnebago:drive:eagle5"</span> ) ) {
-    log.info(<span
-        class="code-quote">"You are permitted to 'drive' the 'winnebago' with 
license plate (id) 'eagle5'.  "</span> +
-                <span class="code-quote">"Here are the keys - have 
fun!"</span>);
-} <span class="code-keyword">else</span> {
-    log.info(<span class="code-quote">"Sorry, you aren't allowed to drive the 
'eagle5' winnebago!"</span>);
+</code></pre>
+<p>Also, we can perform an extremely powerful <em>instance-level</em> 
permission check - the ability to see if the user has the ability to access a 
specific instance of a type:</p>
+<pre><code class="java">if ( currentUser.isPermitted( 
&quot;winnebago:drive:eagle5&quot; ) ) {
+    log.info(&quot;You are permitted to &#39;drive&#39; the 
&#39;winnebago&#39; with license plate (id) &#39;eagle5&#39;.  &quot; +
+                &quot;Here are the keys - have fun!&quot;);
+} else {
+    log.info(&quot;Sorry, you aren&#39;t allowed to drive the &#39;eagle5&#39; 
winnebago!&quot;);
 }
-</pre>
-    </div>
-</div>
-
+</code></pre>
 <p>Piece of cake, right?</p>
-
 <p>Finally, when the user is done using the application, they can log out:</p>
-
-<p></p>
-
-<div class="code panel" style="border-width: 1px;">
-    <div class="codeContent panelContent">
-<pre class="code-java">
-currentUser.logout(); <span class="code-comment">//removes all identifying 
information and invalidates their session too.</span>
-</pre>
-    </div>
-</div>
-
-<p>Well, that's the core to using Apache Shiro at the application-developer 
level. And although there is some pretty
-    sophisticated stuff going on under the hood to make this work so 
elegantly, that's really all there is to it.</p>
-
-<p>But you might ask yourself, "But who is responsible for getting the user 
data during a login (usernames and
-    passwords, role and permissions, etc), and who actually performs those 
security checks during runtime?" Well, you
-    do, by implementing what Shiro calls a <a href="realm.html" 
title="Realm">Realm</a> and plugging that <tt>Realm</tt>
-    into Shiro's configuration. </p>
-
-<p>However, how you configure a <a href="realm.html" title="Realm">Realm</a> 
is largely dependent upon your runtime
-    environment. For example, if you run a standalone application, or if you 
have a web based application, or a Spring
-    or JEE container-based application, or combination thereof. That type of 
configuration is outside the scope of this
-    QuickStart, since its aim is to get you comfortable with the API and 
Shiro's concepts.</p>
-
-<p>When you're ready to jump in with a little more detail, you'll definitely 
want to read the <a
-        href="java-authentication-guide.html" title="Java Authentication 
Guide">Authentication Guide</a> and <a
-        href="java-authorization-guide.html" title="Java Authorization 
Guide">Authorization Guide</a>. Then can move
-    onto other <a href="documentation.html" 
title="Documentation">Documentation</a>, in particularly the <a
-            href="reference.html" title="Reference">Reference Manual</a>, to 
answer any other questions. You'll also
-    probably want to join the user <a href="mailing-lists.html" title="Mailing 
Lists">mailing list</a> - you'll find
-    that we have a great community with people willing to help whenever 
possible.</p>
-
+<pre><code class="java">currentUser.logout(); //removes all identifying 
information and invalidates their session too.
+</code></pre>
+<p>Well, that&rsquo;s the core to using Apache Shiro at the 
application-developer level. And although there is some pretty sophisticated 
stuff going on under the hood to make this work so elegantly, that&rsquo;s 
really all there is to it.</p>
+<p>But you might ask yourself, &ldquo;But who is responsible for getting the 
user data during a login (usernames and passwords, role and permissions, etc), 
and who actually performs those security checks during runtime?&rdquo; Well, 
you do, by implementing what Shiro calls a <a href="realm.html" 
title="Realm">Realm</a> and plugging that <code>Realm</code> into Shiro&rsquo;s 
configuration.</p>
+<p>However, how you configure a <a href="realm.html" title="Realm">Realm</a> 
is largely dependent upon your runtime environment. For example, if you run a 
standalone application, or if you have a web based application, or a Spring or 
JEE container-based application, or combination thereof. That type of 
configuration is outside the scope of this QuickStart, since its aim is to get 
you comfortable with the API and Shiro&rsquo;s concepts.</p>
+<p>When you&rsquo;re ready to jump in with a little more detail, you&rsquo;ll 
definitely want to read the <a href="java-authentication-guide.html" 
title="Java Authentication Guide">Authentication Guide</a> and <a 
href="java-authorization-guide.html" title="Java Authorization 
Guide">Authorization Guide</a>. Then can move onto other <a 
href="documentation.html" title="Documentation">Documentation</a>, in 
particularly the <a href="reference.html" title="Reference">Reference 
Manual</a>, to answer any other questions. You&rsquo;ll also probably want to 
join the user <a href="mailing-lists.html" title="Mailing Lists">mailing 
list</a> - you&rsquo;ll find that we have a great community with people willing 
to help whenever possible.</p>
 <p>Thanks for following along. We hope you enjoy using Apache Shiro!</p>
 
         </div>

Modified: shiro/site/publish/about.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/about.html?rev=1766414&r1=1766413&r2=1766414&view=diff
==============================================================================
--- shiro/site/publish/about.html (original)
+++ shiro/site/publish/about.html Mon Oct 24 14:33:52 2016
@@ -78,46 +78,23 @@
 
         <div id="content">
 
-            <h1><a name="About-AboutApacheShiro"></a>About Apache Shiro</h1>
-
-<p>Apache Shiro is is a top level open source project under the <a 
class="external-link" href="http://www.apache.org";>Apache
-    Software Foundation</a>. As a project, Shiro is an application security 
framework that provides application
-    developers very clean and simple ways of supporting four cornerstones of 
security in their applications:
-    authentication, authorization, enterprise session management and 
cryptography. </p>
-
-<p>If you'd like to learn more about Shiro please visit the links below</p>
-
-<ul class="alternate">
-    <li><b><a href="what-is-shiro.html" title="What is Shiro">What is 
Shiro</a></b> - A deeper look into the project,
-        its mission, and its history
-    </li>
-</ul>
-
-
-<ul class="alternate">
-    <li><b><a href="features.html" title="Features">Features</a></b> - Explore 
the major features of the project</li>
-</ul>
-
-
-<ul class="alternate">
-    <li><b><a href="news.html" title="News">News</a></b> - Stay up to date on 
the latest Apache Shiro news</li>
-</ul>
-
-
-<ul class="alternate">
-    <li><b><a href="events.html" title="Events">Events</a></b> - See what 
Apache Shiro events are coming that you should
-        consider attending
-    </li>
+            <a name="About-AboutApacheShiro"></a>
+<h1><a href="#about-apache-shiro" name="about-apache-shiro">About Apache 
Shiro</a></h1>
+<p>Apache Shiro is is a top level open source project under the <a 
href="http://www.apache.org";>Apache Software Foundation</a>. As a project, 
Shiro is an application security framework that provides application developers 
very clean and simple ways of supporting four cornerstones of security in their 
applications: authentication, authorization, enterprise session management and 
cryptography.</p>
+<p>If you&rsquo;d like to learn more about Shiro please visit the links 
below</p>
+<ul>
+  <li>
+  <p><a href="what-is-shiro.html">What is Shiro</a> - A deeper look into the 
project, its mission, and its history</p></li>
+  <li>
+  <p><a href="features.html">Features</a> - Explore the major features of the 
project</p></li>
+  <li>
+  <p><a href="news.html">News</a> - Stay up to date on the latest Apache Shiro 
news</p></li>
+  <li>
+  <p><a href="events.html">Events</a> - See what Apache Shiro events are 
coming that you should consider attending</p></li>
+  <li>
+  <p><a href="license.html">License</a> - Review the license under which Shiro 
is released - Apache Software License, Version 2.0</p></li>
 </ul>
 
-
-<ul class="alternate">
-    <li><b><a href="license.html" title="License">License</a></b> - Review the 
license under which Shiro is released--
-        Apache Software License, Version 2.0
-    </li>
-</ul>
-
-
         </div>
 
     </div><!--END WRAPPER-->

Modified: shiro/site/publish/adoption.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/adoption.html?rev=1766414&r1=1766413&r2=1766414&view=diff
==============================================================================
--- shiro/site/publish/adoption.html (original)
+++ shiro/site/publish/adoption.html Mon Oct 24 14:33:52 2016
@@ -78,10 +78,9 @@
 
         <div id="content">
 
-            <h1><a name="Adoption-ApacheShiroAdoption"></a>Apache Shiro 
Adoption</h1>
-
+            <a name="Adoption-ApacheShiroAdoption"></a>
+<h1><a href="#apache-shiro-adoption" name="apache-shiro-adoption">Apache Shiro 
Adoption</a></h1>
 <p>Are you using Shiro to build an application? List your name and company 
here and let the world know!</p>
-
 <p>The more people that adopt Shiro, the better it becomes, and the more you 
benefit from it. Help adoption by letting others know how you use it.</p>
 
         </div>

Modified: shiro/site/publish/architecture.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/architecture.html?rev=1766414&r1=1766413&r2=1766414&view=diff
==============================================================================
--- shiro/site/publish/architecture.html (original)
+++ shiro/site/publish/architecture.html Mon Oct 24 14:33:52 2016
@@ -78,109 +78,85 @@
 
         <div id="content">
 
-            <h1><a name="Architecture-ApacheShiroArchitecture"></a>Apache 
Shiro Architecture</h1>
-
-<p>Apache Shiro's design goals are to simplify application security by being 
intuitive and easy to use.  Shiro's core design models how most people think 
about application security - in the context of someone (or something) 
interacting with an application.</p>
-
-<p>Software applications are usually designed based on user stories.  That is, 
you'll often design user interfaces or service APIs based on how a user would 
(or should) interact with the software.  For example, you might say, "If the 
user interacting with my application is logged in, I will show them a button 
they can click to view their account information.  If they are not logged in, I 
will show a sign-up button."  </p>
-
-<p>This example statement indicates that applications are largely written to 
satisfy user requirements and needs.  Even if the 'user' is another software 
system and not a human being, you still write code to reflect behavior based on 
who (or what) is currently interacting with your software.</p>
-
+            <a name="Architecture-ApacheShiroArchitecture"></a>
+<h1><a href="#apache-shiro-architecture" 
name="apache-shiro-architecture">Apache Shiro Architecture</a></h1>
+<p>Apache Shiro&rsquo;s design goals are to simplify application security by 
being intuitive and easy to use. Shiro&rsquo;s core design models how most 
people think about application security - in the context of someone (or 
something) interacting with an application.</p>
+<p>Software applications are usually designed based on user stories. That is, 
you&rsquo;ll often design user interfaces or service APIs based on how a user 
would (or should) interact with the software. For example, you might say, 
&ldquo;If the user interacting with my application is logged in, I will show 
them a button they can click to view their account information. If they are not 
logged in, I will show a sign-up button.&rdquo;</p>
+<p>This example statement indicates that applications are largely written to 
satisfy user requirements and needs. Even if the &lsquo;user&rsquo; is another 
software system and not a human being, you still write code to reflect behavior 
based on who (or what) is currently interacting with your software.</p>
 <p>Shiro reflects these concepts in its own design. By matching what is 
already intuitive for software developers, Apache Shiro remains intuitive and 
easy to use in practically any application.</p>
-
-<h2><a name="Architecture-HighLevelOverview"></a>High-Level Overview</h2>
-
-<p>At the highest conceptual level, Shiro's architecture has 3 primary 
concepts: the <tt>Subject</tt>, <tt>SecurityManager</tt> and <tt>Realms</tt>.  
The following diagram is a high-level overview of how these components 
interact, and we'll cover each concept below:</p>
-
-<p><br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-<span class="image-wrap" style="display: block; text-align: center"><img 
src="assets/images/ShiroBasicArchitecture.png" style="border: 0px solid 
black"></span>
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></p>
-
-<ul><li><b>Subject</b>: As we've mentioned in our <a href="tutorial.html" 
title="Tutorial">Tutorial</a>, the <tt>Subject</tt> is essentially a security 
specific 'view' of the the currently executing user.  Whereas the word 'User' 
often implies a human being, a <tt>Subject</tt> can be a person, but it could 
also represent a 3rd-party service, daemon account, cron job, or anything 
similar - basically anything that is currently interacting with the software.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-<tt>Subject</tt> instances are all bound to (and require) a 
<tt>SecurityManager</tt>.  When you interact with a <tt>Subject</tt>, those 
interactions translate to subject-specific interactions with the 
<tt>SecurityManager</tt>.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>SecurityManager</b>: 
The <tt>SecurityManager</tt> is the heart of Shiro&#8217;s architecture and 
acts as a sort of 'umbrella&#8217; object that coordinates its internal 
security components that together form an object graph. However, once the 
SecurityManager and its internal object graph is configured for an application, 
it is usually left alone and application developers spend almost all of their 
time with the <tt>Subject</tt> API.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-We will talk about the <tt>SecurityManager</tt> in detail later on, but it is 
important to realize that when you interact with a <tt>Subject</tt>, it is 
really the <tt>SecurityManager</tt> behind the scenes that does all the heavy 
lifting for any <tt>Subject</tt> security operation.  This is reflected in the 
basic flow diagram above.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>Realms</b>:  Realms 
act as the &#8216;bridge&#8217; or &#8216;connector&#8217; between Shiro and 
your application&#8217;s security data. When it comes time to actually interact 
with security-related data like user accounts to perform authentication (login) 
and authorization (access control), Shiro looks up many of these things from 
one or more Realms configured for an application.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-In this sense a Realm is essentially a security-specific <a 
class="external-link" href="https://en.wikipedia.org/wiki/Data_access_object"; 
rel="nofollow">DAO</a>: it encapsulates connection details for data sources and 
makes the associated data available to Shiro as needed. When configuring Shiro, 
you must specify at least one Realm to use for authentication and/or 
authorization. The <tt>SecurityManager</tt> may be configured with multiple 
Realms, but at least one is required.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-Shiro provides out-of-the-box Realms to connect to a number of security data 
sources (aka directories) such as LDAP, relational databases (JDBC), text 
configuration sources like INI and properties files, and more. You can plug-in 
your own Realm implementations to represent custom data sources if the default 
Realms do not meet your needs.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-Like other internal components, the Shiro <tt>SecurityManager</tt> manages how 
Realms are used to acquire security and identity data to be represented as 
<tt>Subject</tt> instances.</li></ul>
-
-
-<h2><a name="Architecture-DetailedArchitecture"></a>Detailed Architecture</h2>
-
-<p>The following diagram shows Shiro's core architectural concepts followed by 
short summaries of each:</p>
-
-<p><span class="image-wrap" style="display: block; text-align: center"><img 
src="assets/images/ShiroArchitecture.png" style="border: 0px solid 
black"></span></p>
-
-<ul><li><b>Subject</b> (<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html">org.apache.shiro.subject.Subject</a></tt>)<br
 clear="none">
-A security-specific 'view' of the entity (user, 3rd-party service, cron job, 
etc) currently interacting with the software.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>SecurityManager</b> 
(<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/mgt/SecurityManager.html">org.apache.shiro.mgt.SecurityManager</a></tt>)<br
 clear="none">
-As mentioned above, the <tt>SecurityManager</tt> is the heart of Shiro's 
architecture.  It is mostly an 'umbrella' object that coordinates its managed 
components to ensure they work smoothly together.  It also manages Shiro's view 
of every application user, so it knows how to perform security operations per 
user.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>Authenticator</b> 
(<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authc/Authenticator.html">org.apache.shiro.authc.Authenticator</a></tt>)<br
 clear="none">
-The <tt>Authenticator</tt> is the component that is responsible for executing 
and reacting to authentication (log-in) attempts by users.  When a user tries 
to log-in, that logic is executed by the <tt>Authenticator</tt>.  The 
<tt>Authenticator</tt> knows how to coordinate with one or more <tt>Realms</tt> 
that store relevant user/account information.  The data obtained from these 
<tt>Realms</tt> is used to verify the user's identity to guarantee the user 
really is who they say they are.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-       <ul><li><b>Authentication Strategy</b> (<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authc/pam/AuthenticationStrategy.html">org.apache.shiro.authc.pam.AuthenticationStrategy</a></tt>)<br
 clear="none">
-If more than one <tt>Realm</tt> is configured, the 
<tt>AuthenticationStrategy</tt> will coordinate the Realms to determine the 
conditions under which an authentication attempt succeeds or fails (for 
example, if one realm succeeds but others fail, is the attempt successful? Must 
all realms succeed? Only the first?).
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li></ul>
-       </li><li><b>Authorizer</b> (<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authz/Authorizer.html">org.apache.shiro.authz.Authorizer</a></tt>)<br
 clear="none">
-The <tt>Authorizer</tt> is the component responsible determining users' access 
control in the application.  It is the mechanism that ultimately says if a user 
is allowed to do something or not.  Like the <tt>Authenticator</tt>, the 
<tt>Authorizer</tt> also knows how to coordinate with multiple back-end data 
sources to access role and permission information.  The <tt>Authorizer</tt> 
uses this information to determine exactly if a user is allowed to perform a 
given action.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>SessionManager</b> 
(<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/session/mgt/SessionManager.html">org.apache.shiro.session.mgt.SessionManager</a></tt>)<br
 clear="none">
-The <tt>SessionManager</tt> knows how to create and manage user 
<tt>Session</tt> lifecycles to provide a robust Session experience for users in 
all environments.  This is a unique feature in the world of security frameworks 
- Shiro has the ability to natively manage user Sessions in any environment, 
even if there is no Web/Servlet or EJB container available.  By default, Shiro 
will use an existing session mechanism if available, (e.g. Servlet Container), 
but if there isn't one, such as in a standalone application or non-web 
environment, it will use its built-in enterprise session management to offer 
the same programming experience.  The <tt>SessionDAO</tt> exists to allow any 
datasource to be used to persist sessions.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-       <ul><li><b>SessionDAO</b> (<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/session/mgt/eis/SessionDAO.html">org.apache.shiro.session.mgt.eis.SessionDAO</a></tt>)<br
 clear="none">
-The <tt>SessionDAO</tt> performs <tt>Session</tt> persistence (CRUD) 
operations on behalf of the <tt>SessionManager</tt>.  This allows any data 
store to be plugged in to the Session Management infrastructure.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li></ul>
-       </li><li><b>CacheManager</b> (<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/cache/CacheManager.html">org.apache.shiro.cache.CacheManager</a></tt>)<br
 clear="none">
-The <tt>CacheManager</tt> creates and manages <tt>Cache</tt> instance 
lifecycles used by other Shiro components.  Because Shiro can access many 
back-end data sources for authentication, authorization and session management, 
caching has always been a first-class architectural feature in the framework to 
improve performance while using these data sources.  Any of the modern 
open-source and/or enterprise caching products can be plugged in to Shiro to 
provide a fast and efficient user-experience.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>Cryptography</b> 
(<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/crypto/package-summary.html">org.apache.shiro.crypto.*</a></tt>)<br
 clear="none">
-Cryptography is a natural addition to an enterprise security framework.  
Shiro's <tt>crypto</tt> package contains easy-to-use and understand 
representations of crytographic Ciphers, Hashes (aka digests) and different 
codec implementations.  All of the classes in this package are carefully 
designed to be very easy to use and easy to understand.  Anyone who has used 
Java's native cryptography support knows it can be a challenging animal to 
tame.  Shiro's crypto APIs simplify the complicated Java mechanisms and make 
cryptography easy to use for normal mortal human beings.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline"></li><li><b>Realms</b> (<tt><a 
class="external-link" 
href="static/current/apidocs/org/apache/shiro/realm/Realm.html">org.apache.shiro.realm.Realm</a></tt>)<br
 clear="none">
-As mentioned above, Realms act as the &#8216;bridge&#8217; or 
&#8216;connector&#8217; between Shiro and your application&#8217;s security 
data. When it comes time to actually interact with security-related data like 
user accounts to perform authentication (login) and authorization (access 
control), Shiro looks up many of these things from one or more Realms 
configured for an application.  You can configure as many <tt>Realms</tt> as 
you need (usually one per data source) and Shiro will coordinate with them as 
necessary for both authentication and authorization.</li></ul>
-
-
-<h2><a name="Architecture-The%7B%7BSecurityManager%7D%7D"></a>The 
<tt>SecurityManager</tt></h2>
-
-<p>Because Shiro's API encourages a <tt>Subject</tt>-centric programming 
approach, most application developers will rarely, if ever, interact with the 
<tt>SecurityManager</tt> directly (framework developers however might sometimes 
find it useful). Even so, it is still important to know how the 
<tt>SecurityManager</tt> functions, especially when configuring one for an 
application.</p>
-
-<h2><a name="Architecture-Design"></a>Design</h2>
-
-<p>As stated previously, the application's <tt>SecurityManager</tt> performs 
security operations and manages state for <em>all</em> application users.  In 
Shiro's default <tt>SecurityManager</tt> implementations, this includes:</p>
-
-<ul><li>Authentication</li><li>Authorization</li><li>Session 
Management</li><li>Cache Management</li><li><a href="realm.html" 
title="Realm">Realm</a> coordination</li><li>Event 
propagation</li><li>"Remember Me" Services</li><li>Subject 
creation</li><li>Logout<br clear="none">
-and more.</li></ul>
-
-
-<p>But this is a lot of functionality to try to manage in a single component.  
And, making these things flexible and customizable would be very difficult if 
everything were lumped into a single implementation class.  </p>
-
-<p>To simplify configuration and enable flexible configuration/pluggability, 
Shiro's implementations are all highly modular in design - so modular in fact, 
that the SecurityManager implementation (and its class-hierarchy) does not do 
much at all.  Instead, the <tt>SecurityManager</tt> implementations mostly act 
as a lightweight 'container' component, delegating almost all behavior to 
nested/wrapped components.  This 'wrapper' design is reflected in the detailed 
architecture diagram above.</p>
-
-<p>While the components actually execute the logic, the 
<tt>SecurityManager</tt> implementation knows how and when to coordinate the 
components for the correct behavior.</p>
-
-<p>The <tt>SecurityManager</tt> implementations and are also JavaBeans 
compatible, which allows you (or a configuration mechanism) to easily customize 
the pluggable components via standard JavaBeans accessor/mutator methods 
(get*/set*).  This means the Shiro's architectural modularity can translate 
into very easy configuration for custom behavior.</p>
-
+<a name="Architecture-HighLevelOverview"></a>
+<h2>High-Level Overview</h2>
+<p>At the highest conceptual level, Shiro&rsquo;s architecture has 3 primary 
concepts: the <code>Subject</code>, <code>SecurityManager</code> and 
<code>Realms</code>. The following diagram is a high-level overview of how 
these components interact, and we&rsquo;ll cover each concept below:</p>
+<img style="margin:0px auto;display:block" 
src="assets/images/ShiroBasicArchitecture.png"/>
+<ul>
+  <li>
+    <p><strong>Subject</strong>: As we&rsquo;ve mentioned in our <a 
href="tutorial.html">Tutorial</a>, the <code>Subject</code> is essentially a 
security specific &lsquo;view&rsquo; of the the currently executing user. 
Whereas the word &lsquo;User&rsquo; often implies a human being, a 
<code>Subject</code> can be a person, but it could also represent a 3rd-party 
service, daemon account, cron job, or anything similar - basically anything 
that is currently interacting with the software.</p>
+    <p><code>Subject</code> instances are all bound to (and require) a 
<code>SecurityManager</code>. When you interact with a <code>Subject</code>, 
those interactions translate to subject-specific interactions with the 
<code>SecurityManager</code>.</p>
+  </li>
+  <li>
+    <p><strong>SecurityManager</strong>: The <code>SecurityManager</code> is 
the heart of Shiro&#8217;s architecture and acts as a sort of 
&rsquo;umbrella&#8217; object that coordinates its internal security components 
that together form an object graph. However, once the SecurityManager and its 
internal object graph is configured for an application, it is usually left 
alone and application developers spend almost all of their time with the 
<code>Subject</code> API.</p>
+    <p>We will talk about the <code>SecurityManager</code> in detail later on, 
but it is important to realize that when you interact with a 
<code>Subject</code>, it is really the <code>SecurityManager</code> behind the 
scenes that does all the heavy lifting for any <code>Subject</code> security 
operation. This is reflected in the basic flow diagram above.</p>
+  </li>
+  <li>
+    <p><strong>Realms</strong>: Realms act as the &#8216;bridge&#8217; or 
&#8216;connector&#8217; between Shiro and your application&#8217;s security 
data. When it comes time to actually interact with security-related data like 
user accounts to perform authentication (login) and authorization (access 
control), Shiro looks up many of these things from one or more Realms 
configured for an application.</p>
+    <p>In this sense a Realm is essentially a security-specific <a 
class="external-link" href="https://en.wikipedia.org/wiki/Data_access_object"; 
rel="nofollow">DAO</a>: it encapsulates connection details for data sources and 
makes the associated data available to Shiro as needed. When configuring Shiro, 
you must specify at least one Realm to use for authentication and/or 
authorization. The <code>SecurityManager</code> may be configured with multiple 
Realms, but at least one is required.</p>
+    <p>Shiro provides out-of-the-box Realms to connect to a number of security 
data sources (aka directories) such as LDAP, relational databases (JDBC), text 
configuration sources like INI and properties files, and more. You can plug-in 
your own Realm implementations to represent custom data sources if the default 
Realms do not meet your needs.</p>
+    <p>Like other internal components, the Shiro <code>SecurityManager</code> 
manages how Realms are used to acquire security and identity data to be 
represented as <code>Subject</code> instances.</li></ul></p>
+  </li>
+</ul>
+<a name="Architecture-DetailedArchitecture"></a>
+<h2><a href="#detailed-architecture" name="detailed-architecture">Detailed 
Architecture</a></h2>
+<p>The following diagram shows Shiro&rsquo;s core architectural concepts 
followed by short summaries of each:</p>
+<img style="margin:0px auto;display:block" 
src="assets/images/ShiroArchitecture.png"/>
+<ul>
+  <li>
+  <p><strong>Subject</strong> (<a 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html"><code>org.apache.shiro.subject.Subject</code></a>)<br/>A
 security-specific &lsquo;view&rsquo; of the entity (user, 3rd-party service, 
cron job, etc) currently interacting with the software.</p></li>
+  <li>
+  <p><strong>SecurityManager</strong> (<a 
href="static/current/apidocs/org/apache/shiro/mgt/SecurityManager.html">org.apache.shiro.mgt.SecurityManager</a>)<br/>As
 mentioned above, the <code>SecurityManager</code> is the heart of 
Shiro&rsquo;s architecture. It is mostly an &lsquo;umbrella&rsquo; object that 
coordinates its managed components to ensure they work smoothly together. It 
also manages Shiro&rsquo;s view of every application user, so it knows how to 
perform security operations per user.</p></li>
+  <li>
+    <p><strong>Authenticator</strong> (<a 
href="static/current/apidocs/org/apache/shiro/authc/Authenticator.html">org.apache.shiro.authc.Authenticator</a>)<br/>The
 <code>Authenticator</code> is the component that is responsible for executing 
and reacting to authentication (log-in) attempts by users. When a user tries to 
log-in, that logic is executed by the <code>Authenticator</code>. The 
<code>Authenticator</code> knows how to coordinate with one or more 
<code>Realms</code> that store relevant user/account information. The data 
obtained from these <code>Realms</code> is used to verify the user&rsquo;s 
identity to guarantee the user really is who they say they are.</p>
+    <ul>
+      <li>
+      <p><strong>Authentication Strategy</strong> (<a 
href="static/current/apidocs/org/apache/shiro/authc/pam/AuthenticationStrategy.html">org.apache.shiro.authc.pam.AuthenticationStrategy</a>)<br/>If
 more than one <code>Realm</code> is configured, the 
<code>AuthenticationStrategy</code> will coordinate the Realms to determine the 
conditions under which an authentication attempt succeeds or fails (for 
example, if one realm succeeds but others fail, is the attempt successful? Must 
all realms succeed? Only the first?).</p></li>
+    </ul>
+  </li>
+  <li>
+  <p><strong>Authorizer</strong> (<a 
href="static/current/apidocs/org/apache/shiro/authz/Authorizer.html">org.apache.shiro.authz.Authorizer</a>)<br/>The
 <code>Authorizer</code> is the component responsible determining users&rsquo; 
access control in the application. It is the mechanism that ultimately says if 
a user is allowed to do something or not. Like the <code>Authenticator</code>, 
the <code>Authorizer</code> also knows how to coordinate with multiple back-end 
data sources to access role and permission information. The 
<code>Authorizer</code> uses this information to determine exactly if a user is 
allowed to perform a given action.</p></li>
+  <li>
+    <p><strong>SessionManager</strong> (<a 
href="static/current/apidocs/org/apache/shiro/session/mgt/SessionManager.html">org.apache.shiro.session.mgt.SessionManager</a>)<br/>The
 <code>SessionManager</code> knows how to create and manage user 
<code>Session</code> lifecycles to provide a robust Session experience for 
users in all environments. This is a unique feature in the world of security 
frameworks - Shiro has the ability to natively manage user Sessions in any 
environment, even if there is no Web/Servlet or EJB container available. By 
default, Shiro will use an existing session mechanism if available, (e.g. 
Servlet Container), but if there isn&rsquo;t one, such as in a standalone 
application or non-web environment, it will use its built-in enterprise session 
management to offer the same programming experience. The 
<code>SessionDAO</code> exists to allow any datasource to be used to persist 
sessions.</p>
+    <ul>
+      <li>
+      <p><strong>SessionDAO</strong> (<a 
href="static/current/apidocs/org/apache/shiro/session/mgt/eis/SessionDAO.html">org.apache.shiro.session.mgt.eis.SessionDAO</a>)<br/>The
 <code>SessionDAO</code> performs <code>Session</code> persistence (CRUD) 
operations on behalf of the <code>SessionManager</code>. This allows any data 
store to be plugged in to the Session Management infrastructure.</p></li>
+    </ul>
+  </li>
+  <li>
+  <p><strong>CacheManager</strong> (<a 
href="static/current/apidocs/org/apache/shiro/cache/CacheManager.html">org.apache.shiro.cache.CacheManager</a>)<br/>The
 <code>CacheManager</code> creates and manages <code>Cache</code> instance 
lifecycles used by other Shiro components. Because Shiro can access many 
back-end data sources for authentication, authorization and session management, 
caching has always been a first-class architectural feature in the framework to 
improve performance while using these data sources. Any of the modern 
open-source and/or enterprise caching products can be plugged in to Shiro to 
provide a fast and efficient user-experience.</p></li>
+  <li>
+  <p><strong>Cryptography</strong> (<a 
href="static/current/apidocs/org/apache/shiro/crypto/package-summary.html">org.apache.shiro.crypto.*</a>)<br/>Cryptography
 is a natural addition to an enterprise security framework. Shiro&rsquo;s 
<code>crypto</code> package contains easy-to-use and understand representations 
of crytographic Ciphers, Hashes (aka digests) and different codec 
implementations. All of the classes in this package are carefully designed to 
be very easy to use and easy to understand. Anyone who has used Java&rsquo;s 
native cryptography support knows it can be a challenging animal to tame. 
Shiro&rsquo;s crypto APIs simplify the complicated Java mechanisms and make 
cryptography easy to use for normal mortal human beings.</p></li>
+  <li>
+  <p><strong>Realms</strong> (<a 
href="static/current/apidocs/org/apache/shiro/realm/Realm.html">org.apache.shiro.realm.Realm</a>)<br/>As
 mentioned above, Realms act as the &#8216;bridge&#8217; or 
&#8216;connector&#8217; between Shiro and your application&#8217;s security 
data. When it comes time to actually interact with security-related data like 
user accounts to perform authentication (login) and authorization (access 
control), Shiro looks up many of these things from one or more Realms 
configured for an application. You can configure as many <code>Realms</code> as 
you need (usually one per data source) and Shiro will coordinate with them as 
necessary for both authentication and authorization.</p></li>
+</ul>
+<a name="Architecture-The%7B%7BSecurityManager%7D%7D"></a>
+<h2>The <code>SecurityManager</code></h2>
+<p>Because Shiro&rsquo;s API encourages a <code>Subject</code>-centric 
programming approach, most application developers will rarely, if ever, 
interact with the <code>SecurityManager</code> directly (framework developers 
however might sometimes find it useful). Even so, it is still important to know 
how the <code>SecurityManager</code> functions, especially when configuring one 
for an application.</p>
+<a name="Architecture-Design"></a>
+<h2><a href="#design" name="design">Design</a></h2>
+<p>As stated previously, the application&rsquo;s <code>SecurityManager</code> 
performs security operations and manages state for <em>all</em> application 
users. In Shiro&rsquo;s default <code>SecurityManager</code> implementations, 
this includes:</p>
+<ul>
+  <li>Authentication</li>
+  <li>Authorization</li>
+  <li>Session Management</li>
+  <li>Cache Management</li>
+  <li><a href="realm.html">Realm</a> coordination</li>
+  <li>Event propagation</li>
+  <li>&ldquo;Remember Me&rdquo; Services</li>
+  <li>Subject creation</li>
+  <li>Logout and more.</li>
+</ul>
+<p>But this is a lot of functionality to try to manage in a single component. 
And, making these things flexible and customizable would be very difficult if 
everything were lumped into a single implementation class.</p>
+<p>To simplify configuration and enable flexible configuration/pluggability, 
Shiro&rsquo;s implementations are all highly modular in design - so modular in 
fact, that the SecurityManager implementation (and its class-hierarchy) does 
not do much at all. Instead, the <code>SecurityManager</code> implementations 
mostly act as a lightweight &lsquo;container&rsquo; component, delegating 
almost all behavior to nested/wrapped components. This &lsquo;wrapper&rsquo; 
design is reflected in the detailed architecture diagram above.</p>
+<p>While the components actually execute the logic, the 
<code>SecurityManager</code> implementation knows how and when to coordinate 
the components for the correct behavior.</p>
+<p>The <code>SecurityManager</code> implementations and are also JavaBeans 
compatible, which allows you (or a configuration mechanism) to easily customize 
the pluggable components via standard JavaBeans accessor/mutator methods 
(get*/set*). This means the Shiro&rsquo;s architectural modularity can 
translate into very easy configuration for custom behavior.</p>
 <div class="panelMacro">
     <table class="tipMacro">
         <colgroup span="1">
@@ -194,20 +170,17 @@ and more.</li></ul>
             <td colspan="1" rowspan="1">
                 <b>Easy Configuration</b>
                 <br clear="none">
-                Because of JavaBeans compatibility, it is very easy to 
configure the <tt>SecurityManager</tt> with custom components via any mechanism 
that supports JavaBeans-style configuration, such as <a href="spring.html" 
title="Spring">Spring</a>, Guice, JBoss, etc.
+                Because of JavaBeans compatibility, it is very easy to 
configure the `SecurityManager` with custom components via any mechanism that 
supports JavaBeans-style configuration, such as <a href="spring.html" 
title="Spring">Spring</a>, Guice, JBoss, etc.
             </td>
         </tr>
         </tbody>
     </table>
 </div>
-
-<p>We will cover <a href="configuration.html" 
title="Configuration">Configuration</a> next.</p>
-
-<h2><a name="Architecture-Lendahandwithdocumentation"></a>Lend a hand with 
documentation </h2>
-
-<p>While we hope this documentation helps you with the work you're doing with 
Apache Shiro, the community is improving and expanding the documentation all 
the time.  If you'd like to help the Shiro project, please consider corrected, 
expanding, or adding documentation where you see a need. Every little bit of 
help you provide expands the community and in turn improves Shiro. </p>
-
-<p>The easiest way to contribute your documentation is to send it to the <a 
class="external-link" href="http://shiro-user.582556.n2.nabble.com/"; 
rel="nofollow">User Forum</a> or the <a href="mailing-lists.html" 
title="Mailing Lists">User Mailing List</a>.</p>
+<p>We will cover <a href="configuration.html">Configuration</a> next.</p>
+<a name="Architecture-Lendahandwithdocumentation"></a>
+<h2><a href="#lend-a-hand-with-documentation" 
name="lend-a-hand-with-documentation">Lend a hand with documentation</a></h2>
+<p>While we hope this documentation helps you with the work you&rsquo;re doing 
with Apache Shiro, the community is improving and expanding the documentation 
all the time. If you&rsquo;d like to help the Shiro project, please consider 
corrected, expanding, or adding documentation where you see a need. Every 
little bit of help you provide expands the community and in turn improves 
Shiro.</p>
+<p>The easiest way to contribute your documentation is to send it to the <a 
href="http://shiro-user.582556.n2.nabble.com/";>User Forum</a> or the <a 
href="mailing-lists.html">User Mailing List</a>.</p>
 
         </div>
 

Modified: shiro/site/publish/articles.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/articles.html?rev=1766414&r1=1766413&r2=1766414&view=diff
==============================================================================
--- shiro/site/publish/articles.html (original)
+++ shiro/site/publish/articles.html Mon Oct 24 14:33:52 2016
@@ -78,70 +78,74 @@
 
         <div id="content">
 
-            <h1><a name="Articles-ApacheShiroArticles"></a>Apache Shiro 
Articles</h1>
-
-<p>Here are some articles written by and for members of the Apache Shiro 
community.  Please post any errata to the user or dev <a 
href="mailing-lists.html" title="Mailing Lists">mailing lists</a>.</p>
-
-<h2><a name="Articles-IntroductoryArticles"></a>Introductory Articles</h2>
+            <a name="Articles-ApacheShiroArticles"></a>
+<h1><a href="#apache-shiro-articles" name="apache-shiro-articles">Apache Shiro 
Articles</a></h1>
+<p>Here are some articles written by and for members of the Apache Shiro 
community. Please post any errata to the user or dev <a 
href="mailing-lists.html" title="Mailing Lists">mailing lists</a>.</p>
+<a name="Articles-IntroductoryArticles"></a>
+<h2><a href="#introductory-articles" name="introductory-articles">Introductory 
Articles</a></h2>
 <p>New to Shiro? Here are some great introductory articles:</p>
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="https://www.infoq.com/articles/apache-shiro"; rel="nofollow">Application 
Security with Apache Shiro</a></b> InfoQ article by Les Hazlewood, Apache Shiro 
PMC Chair.</li></ul>
-
-<ul class="alternate" type="square"><li><b><a href="webapp-tutorial.html" 
title="Apache Shiro Beginner's Webapp Tutorial">Apache Shiro Beginner's Webapp 
Tutorial</a>: a step-by-step tutorial to enable Shiro in a web application</b> 
on 19 November 2013 by Les Hazlewood</li></ul>
-
-<ul class="alternate" type="square"><li><b><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></b> on 13 March 2012 by Les 
Hazlewood.</li></ul>
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://www.ibm.com/developerworks/web/library/wa-apacheshiro/"; 
rel="nofollow">Introducing Apache Shiro</a></b> by Nathan Good on IBM 
DeveloperWorks, 14 September 2010.</li></ul>
-
-<ul class="alternate" type="square"><li><b>An Introduction to Shiro (formerly 
JSecurity/Ki) - A Beginner's Tutorial</b> by <a class="external-link" 
href="http://www.brucephillips.name"; rel="nofollow">Bruce Phillips</a>:
-       <ul class="alternate" type="square"><li><a class="external-link" 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-1";
 rel="nofollow">Part 1</a></li><li><a class="external-link" 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-2";
 rel="nofollow">Part 2</a></li><li><a class="external-link" 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-3";
 rel="nofollow">Part 3</a></li><li><a class="external-link" 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-4";
 rel="nofollow">Part 4</a></li><li><a class="external-link" 
href="http://www.brucephillips.name/blog/index.cfm/2009/5/1/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners-Tutorial-Part-5";
 rel="nofollow">Part 5</a></li></ul>
-       </li></ul>
-
-<h2><a name="Articles-AdditionalArticles"></a>Additional Articles</h2>
-<p>Once you've gotten your feet wet, you might find these useful too:</p>
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://czetsuya-tech.blogspot.com/2012/10/how-to-integrate-apache-shiro-with.html?spref=tw";
 rel="nofollow">How to Integrate Apache Shiro with JavaEE6</a></b> by czetsuya 
on 11 October 2012.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="https://mehmetceliksoy.wordpress.com/2015/06/28/shiro-jdbc-realm/"; 
rel="nofollow">Custom Apache Shiro JDBC Realm</a></b> by Mehmet 
Celiksoy</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="https://bubba-h57.github.io/H57_Shiro/"; rel="nofollow">Spring MVC + Shiro 
+ myBatis + JSR-303 Validation</a></b> by Rob Hines et. al. on 2 April 
2012.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="https://www.zkoss.org/wiki/Small_Talks/2012/March/Securing_ZK_Applications_With_Apache_Shiro";
 rel="nofollow">Securing ZK Applications with Apache Shiro</a></b> by Ashish 
Dasnurkar on 6 March 2012.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b>Facebook Login with Apache 
Shiro</b> by Mike Warren on 28 November 2011
-       <ul class="alternate" type="square"><li><a class="external-link" 
href="https://mrdwnotes.wordpress.com/2011/11/28/using-apache-shiro-security-to-allow-login-via-facebook-part-1/";
 rel="nofollow">Part 1</a></li><li><a class="external-link" 
href="https://mrdwnotes.wordpress.com/2011/11/28/using-apache-shiro-security-to-allow-login-via-facebook-part-2/";
 rel="nofollow">Part 2</a></li></ul>
-       </li></ul>
-
-
-<ul class="alternate" type="square"><li><b>Apache Shiro - a blog series by 
Meri</b>
-       <ul class="alternate" type="square"><li><a class="external-link" 
href="http://meri-stuff.blogspot.com/2011/03/apache-shiro-part-1-basics.html"; 
rel="nofollow">Part 1 - Basics</a> on 27 March 2011</li><li><a 
class="external-link" 
href="http://meri-stuff.blogspot.com/2011/04/apache-shiro-part-2-realms-database-and.html";
 rel="nofollow">Part 2 - Realms, Database and PGP Certificates</a> on 18 April 
2011</li><li><a class="external-link" 
href="http://meri-stuff.blogspot.com/2011/12/apache-shiro-part-3-cryptography.html";
 rel="nofollow">Part 3 - Cryptography</a> on 4 December 2011</li></ul>
-       </li></ul>
-
-
-<ul class="alternate" type="square"><li><b><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></b> by Les 
Hazlewood on 9 May 2011</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://blog.xebia.com/author/yamsellem/"; rel="nofollow">HTTP 
Authentication and Security with Apache Shiro</a></b> blog article by yamsellem 
on 18 April 2011.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://spring-java-ee.blogspot.com/2011/04/using-shiro-for-authorization-via-cdi.html";
 rel="nofollow">Using Shiro for Authorization via CDI Interceptors then Easily 
Test with Arquillian</a></b> blog article by Hendy Irawan on 16 April 
2011.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://blogs.mulesoft.com/dev/mule-dev/apache-shiro-support-for-mule/"; 
rel="nofollow">Apache Shiro Support for Mule</a></b> by Dan Diephouse on 10 
January 2011.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://www.gdevelop.com/blog/2010/12/apache-shiro-on-appengine"; 
rel="nofollow">Apache Shiro on Google AppEngine</a></b> by Trung on 13 December 
2010.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b><a class="external-link" 
href="http://techbeats.deluan.com/apache-shiro-tags-for-jsffacelets"; 
rel="nofollow">Apache Shiro tags for JSF - Securing Your JSF Pages</a></b> by 
Deluan Quint&#227;o on 1 November 2010.</li></ul>
-
-
-<ul class="alternate" type="square"><li><b>Shiro DevNexus 2009 
Presentation</b> by Jeremy Haile: (<a 
href="assets/images/articles/Ki-DevNexus-2009.pdf?version=1&amp;modificationDate=1246602947000">PDF</a>)
 (<a 
href="assets/images/articles/Ki-DevNexus-2009.key.zip?version=1&amp;modificationDate=1246602947000">Keynote</a>)
 (<a 
href="assets/images/articles/Ki-DevNexus-2009.ppt.zip?version=1&amp;modificationDate=1246602947000">Powerpoint</a>)</li></ul>
-
+<ul>
+  <li>
+  <p><strong><a href="https://www.infoq.com/articles/apache-shiro";>Application 
Security with Apache Shiro</a></strong> InfoQ article by Les Hazlewood, Apache 
Shiro PMC Chair.</p></li>
+  <li>
+  <p><strong><a href="webapp-tutorial.html" title="Apache Shiro Beginner&#39;s 
Webapp Tutorial">Apache Shiro Beginner&rsquo;s Webapp Tutorial</a>: a 
step-by-step tutorial to enable Shiro in a web application</strong> on 19 
November 2013 by Les Hazlewood</p></li>
+  <li>
+  <p><strong><a 
href="https://stormpath.com/blog/whats-new-apache-shiro-12";>What&rsquo;s new in 
Apache Shiro 1.2</a></strong> on 13 March 2012 by Les Hazlewood.</p></li>
+  <li>
+  <p><strong><a 
href="http://www.ibm.com/developerworks/web/library/wa-apacheshiro/";>Introducing
 Apache Shiro</a></strong> by Nathan Good on IBM DeveloperWorks, 14 September 
2010.</p></li>
+  <li>
+    <p><strong>An Introduction to Shiro (formerly JSecurity/Ki) - A 
Beginner&rsquo;s Tutorial</strong> by <a 
href="http://www.brucephillips.name";>Bruce Phillips</a>:</p>
+    <ul>
+      <li><a 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-1";>Part
 1</a></li>
+      <li><a 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-2";>Part
 2</a></li>
+      <li><a 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-3";>Part
 3</a></li>
+      <li><a 
href="http://www.brucephillips.name/blog/index.cfm/2009/4/5/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners--Tutorial-Part-4";>Part
 4</a></li>
+      <li><a 
href="http://www.brucephillips.name/blog/index.cfm/2009/5/1/An-Introduction-to-Ki-formerly-JSecurity--A-Beginners-Tutorial-Part-5";>Part
 5</a></li>
+    </ul>
+  </li>
+</ul>
+<a name="Articles-AdditionalArticles"></a>
+<h2><a href="#additional-articles" name="additional-articles">Additional 
Articles</a></h2>
+<p>Once you&rsquo;ve gotten your feet wet, you might find these useful too:</p>
+<ul>
+  <li>
+  <p><strong><a 
href="http://czetsuya-tech.blogspot.com/2012/10/how-to-integrate-apache-shiro-with.html?spref=tw";>How
 to Integrate Apache Shiro with JavaEE6</a></strong> by czetsuya on 11 October 
2012.</p></li>
+  <li>
+  <p><strong><a 
href="https://mehmetceliksoy.wordpress.com/2015/06/28/shiro-jdbc-realm/";>Custom 
Apache Shiro JDBC Realm</a></strong> by Mehmet Celiksoy</p></li>
+  <li>
+  <p><strong><a href="https://bubba-h57.github.io/H57_Shiro/";>Spring MVC + 
Shiro + myBatis + JSR-303 Validation</a></strong> by Rob Hines et. al. on 2 
April 2012.</p></li>
+  <li>
+  <p><strong><a 
href="https://www.zkoss.org/wiki/Small_Talks/2012/March/Securing_ZK_Applications_With_Apache_Shiro";>Securing
 ZK Applications with Apache Shiro</a></strong> by Ashish Dasnurkar on 6 March 
2012.</p></li>
+  <li>
+    <p><strong>Facebook Login with Apache Shiro</strong> by Mike Warren on 28 
November 2011</p>
+    <ul>
+      <li><a 
href="https://mrdwnotes.wordpress.com/2011/11/28/using-apache-shiro-security-to-allow-login-via-facebook-part-1/";>Part
 1</a></li>
+      <li><a 
href="https://mrdwnotes.wordpress.com/2011/11/28/using-apache-shiro-security-to-allow-login-via-facebook-part-2/";>Part
 2</a></li>
+    </ul>
+  </li>
+  <li>
+    <p><strong>Apache Shiro - a blog series by Meri</strong></p>
+    <ul>
+      <li><a 
href="http://meri-stuff.blogspot.com/2011/03/apache-shiro-part-1-basics.html";>Part
 1 - Basics</a> on 27 March 2011</li>
+      <li><a 
href="http://meri-stuff.blogspot.com/2011/04/apache-shiro-part-2-realms-database-and.html";>Part
 2 - Realms, Database and PGP Certificates</a> on 18 April 2011</li>
+      <li><a 
href="http://meri-stuff.blogspot.com/2011/12/apache-shiro-part-3-cryptography.html";>Part
 3 - Cryptography</a> on 4 December 2011</li>
+    </ul>
+  </li>
+  <li>
+  <p><strong><a 
href="https://stormpath.com/blog/new-rbac-resource-based-access-control";>The 
New RBAC: Resource-Based Access Control</a></strong> by Les Hazlewood on 9 May 
2011</p></li>
+  <li>
+  <p><strong><a href="http://blog.xebia.com/author/yamsellem/";>HTTP 
Authentication and Security with Apache Shiro</a></strong> blog article by 
yamsellem on 18 April 2011.</p></li>
+  <li>
+  <p><strong><a 
href="http://spring-java-ee.blogspot.com/2011/04/using-shiro-for-authorization-via-cdi.html";>Using
 Shiro for Authorization via CDI Interceptors then Easily Test with 
Arquillian</a></strong> blog article by Hendy Irawan on 16 April 2011.</p></li>
+  <li>
+  <p><strong><a 
href="http://blogs.mulesoft.com/dev/mule-dev/apache-shiro-support-for-mule/";>Apache
 Shiro Support for Mule</a></strong> by Dan Diephouse on 10 January 
2011.</p></li>
+  <li>
+  <p><strong><a 
href="http://www.gdevelop.com/blog/2010/12/apache-shiro-on-appengine";>Apache 
Shiro on Google AppEngine</a></strong> by Trung on 13 December 2010.</p></li>
+  <li>
+  <p><strong><a 
href="http://techbeats.deluan.com/apache-shiro-tags-for-jsffacelets";>Apache 
Shiro tags for JSF - Securing Your JSF Pages</a></strong> by Deluan Quintão on 
1 November 2010.</p></li>
+  <li>
+  <p><strong>Shiro DevNexus 2009 Presentation</strong> by Jeremy Haile: (<a 
href="assets/images/articles/Ki-DevNexus-2009.pdf?version=1&modificationDate=1246602947000">PDF</a>)
 (<a 
href="assets/images/articles/Ki-DevNexus-2009.key.zip?version=1&modificationDate=1246602947000">Keynote</a>)
 (<a 
href="assets/images/articles/Ki-DevNexus-2009.ppt.zip?version=1&modificationDate=1246602947000">Powerpoint</a>)</p></li>
+</ul>
 
         </div>
 

Modified: shiro/site/publish/authentication-guide.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/authentication-guide.html?rev=1766414&r1=1766413&r2=1766414&view=diff
==============================================================================
--- shiro/site/publish/authentication-guide.html (original)
+++ shiro/site/publish/authentication-guide.html Mon Oct 24 14:33:52 2016
@@ -80,8 +80,6 @@
 
             <p>This page has been moved.  You are being redirected.</p>
 
-<p></p>
-
 <div class="panelMacro">
     <table class="noteMacro">
         <colgroup span="1">
@@ -97,7 +95,7 @@
             <td colspan="1" rowspan="1">
                 <b>Redirection Notice</b>
                 <br clear="none">
-                This page should redirect to <a 
href="java-authentication-guide.html" title="Java Authentication Guide">Java 
Authentication Guide</a>.
+                This page should redirect to <a 
href="java-authentication-guide.html" title="Authentication 
Guide">Authentication Guide</a>.
             </td>
         </tr>
         </tbody>
@@ -105,9 +103,9 @@
 </div>
 
 <script type="text/javascript">
-<!--
-window.location = "java-authentication-guide.html"
-//-->
+    <!--
+    window.location = "java-authentication-guide.html"
+    //-->
 </script>
 
 


Reply via email to