This is an automated email from the ASF dual-hosted git repository.

lprimak pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/shiro-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new c0bb2f0ce check site oct11
c0bb2f0ce is described below

commit c0bb2f0ce2015fb31c0b1b557580bd5cb98a4f8d
Author: lprimak <[email protected]>
AuthorDate: Sun Oct 11 00:40:01 2026 -0500

    check site oct11
---
 .gitignore               |   9 ++
 .well-known/security.txt |   2 +-
 architecture.html        |   4 +-
 authentication.html      |   3 +
 authenticator.html       | 235 +++++++++++++++++++++++++++++++++++++----
 authorization.html       |   3 +
 authorizer.html          | 265 +++++++++++++++++++++++++++++++++++++++++++----
 feed.xml                 |   2 +-
 issues.html              |   7 +-
 sitemap.xml              |  16 +--
 10 files changed, 486 insertions(+), 60 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..e9daf1963
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+*.iml
+.idea/
+/output
+/target/
+/.project
+/.settings
+/cache
+.sdkmanrc
+.DS_Store
diff --git a/.well-known/security.txt b/.well-known/security.txt
index 2df684228..f5e73a636 100644
--- a/.well-known/security.txt
+++ b/.well-known/security.txt
@@ -1,5 +1,5 @@
 Contact: mailto:[email protected]
-Expires: 2027-09-23T23:09:38Z
+Expires: 2027-10-11T05:39:47Z
 Preferred-Languages: en
 Canonical: https://shiro.apache.org/.well-known/security.txt
 Policy: https://shiro.apache.org/security-reports.html
\ No newline at end of file
diff --git a/architecture.html b/architecture.html
index 7d1076730..5efb72e7e 100644
--- a/architecture.html
+++ b/architecture.html
@@ -301,7 +301,7 @@ As mentioned above, the <code>SecurityManager</code> is the 
heart of Shiro&#8217
 </li>
 <li>
 <p><strong>Authenticator</strong> (<a 
href="static/current/apidocs/org/apache/shiro/authc/Authenticator.html">org.apache.shiro.authc.Authenticator</a>)
-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&#8217;s 
identity to guarantee the user really is w [...]
+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&#8217;s 
identity to guarantee the user really is w [...]
 <div class="ulist">
 <ul>
 <li>
@@ -313,7 +313,7 @@ If more than one <code>Realm</code> is configured, the 
<code>AuthenticationStrat
 </li>
 <li>
 <p><strong>Authorizer</strong> (<a 
href="static/current/apidocs/org/apache/shiro/authz/Authorizer.html">org.apache.shiro.authz.Authorizer</a>)
-The <code>Authorizer</code> 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 <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>
+The <code>Authorizer</code> 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 <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. See [...]
 </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>)
diff --git a/authentication.html b/authentication.html
index 94071b732..acbb4c7c4 100644
--- a/authentication.html
+++ b/authentication.html
@@ -611,6 +611,9 @@ We will cover the <code>Realm</code> authentication 
behavior shortly.</p>
 <div class="sect2">
 <h3 id="Authentication-AuthenticationSequence-Authenticator">Authenticator</h3>
 <div class="paragraph">
+<p>For a standalone overview of the component, see <a 
href="authenticator.html">Apache Shiro Authenticators</a>.</p>
+</div>
+<div class="paragraph">
 <p>As mentioned earlier, the Shiro <code>SecurityManager</code> 
implementations default to using a <a 
href="/static/current/apidocs/org/apache/shiro/authc/pam/ModularRealmAuthenticator.html"><code>ModularRealmAuthenticator</code></a>
 instance.
 The <code>ModularRealmAuthenticator</code> equally supports applications with 
single Realm as well as those with multiple realms.</p>
 </div>
diff --git a/authenticator.html b/authenticator.html
index 672ad43c1..315dc0281 100644
--- a/authenticator.html
+++ b/authenticator.html
@@ -18,20 +18,26 @@
 <html lang="en">
   <head>
     <meta charset="utf-8"/>
-    <title>Authenticator | Apache Shiro</title>
+    <title>Apache Shiro Authenticators | Apache Shiro</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="keywords" content='documentation,todo,lend-a-hand'>
+    <meta name="description" content="Understanding Apache Shiro 
Authenticators - the component responsible for verifying user identity. Learn 
how Authenticators work with Realms and AuthenticationStrategies.">
+    <meta property="og:description" content="Understanding Apache Shiro 
Authenticators - the component responsible for verifying user identity. Learn 
how Authenticators work with Realms and AuthenticationStrategies.">
+    <meta name="keywords" 
content='authenticator,authentication,security,realms'>
     <meta name="generator" content="JBake">
     <meta name="google-site-verification" 
content="QIax6uT5UX3enoU0G8Pz2pXbQ45KaQuHZ3nCh9V27mw">
     <meta name="google-site-verification" 
content="ecFap6dWJgS_GCCtxmJQJ_nFYQhM6EgSpBPZDU7xsCE">
     <meta name="google-site-verification" 
content="gBTYOG8lMfNb_jrWrH3kFbudpEs_WrAJ2lb2-zLRaso"/>
     <meta name="msvalidate.01" content="0B57EB46CBFAD8FD45008D2DB6B6C68C">
 
-    <meta property="og:title" content="Authenticator | Apache Shiro"/>
-    <meta property="og:type" content="website"/>
-    <meta property="article:tag" content='documentation'/>
-    <meta property="article:tag" content='todo'/>
-    <meta property="article:tag" content='lend-a-hand'/>
+    <meta property="og:title" content="Apache Shiro Authenticators | Apache 
Shiro"/>
+    <meta property="og:type" content="article"/>
+      <meta name="twitter:card" content="summary" />
+    <meta name="twitter:site" content="@ApacheShiro" />
+    <meta property="article:modification_time" content="2010-03-18T00:00:00Z"/>
+    <meta property="article:tag" content='authenticator'/>
+    <meta property="article:tag" content='authentication'/>
+    <meta property="article:tag" content='security'/>
+    <meta property="article:tag" content='realms'/>
     <meta property="og:locale" content="en_US" />
     <meta property="og:url" 
content='https://shiro.apache.org/authenticator.html'/>
     <meta property="og:image" content='images/shiro-featured-image.png'/>
@@ -196,26 +202,209 @@
       </div>
     </nav>
 
-  <div class="page-header">
-    <h1>Authenticator</h1>
+       <div class="page-header">
+               <h1>Apache Shiro Authenticators</h1>
+       </div>
+
+
+  <div class="admonitionblock tip">
+    <table>
+      <tbody>
+        <tr>
+          <td class="icon">
+            <div class="title">Handy Hint</div>
+          </td>
+          <td class="content">
+            <div class="title">Shiro v1 and v2 version end-of-life notice</div>
+            <div class="paragraph">
+              <p>As of February 28, 2024, Shiro v1 was superseded by v2.<p>
+              <p>As of June 29, 2026, Shiro v2 was superseded by v3.<p>
+            </div>
+          </td>
+        </tr>
+      </tbody>
+    </table>
   </div>
 
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#Authenticator-Role">Role in the SecurityManager</a></li>
+<li><a 
href="#Authenticator-ModularRealmAuthenticator">ModularRealmAuthenticator</a></li>
+<li><a href="#Authenticator-SingleVsMultipleRealms">Single vs. Multiple 
Realms</a></li>
+<li><a 
href="#Authenticator-AuthenticationStrategy">AuthenticationStrategy</a></li>
+<li><a href="#Authenticator-Configuration">Configuration</a></li>
+<li><a href="#Authenticator-RealmInteraction">How Authenticators Work with 
Realms</a></li>
+</ul>
+</div>
+<div id="preamble">
+<div class="sectionbody">
 <div class="paragraph">
-<p>TODO</p>
+<p>An <code>Authenticator</code> is a component responsible for verifying that 
a user actually is who they claim to be.
+It is the core component that executes the authentication process on behalf of 
the <a href="/subject.html">Subject</a>.</p>
 </div>
-<hr />
-
-<h2><a id="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 correcting, 
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 submit a 
pull-request by clicking on the <code>Edit</code> link below,
-  or send it to the <a href="mailing-lists.html" title="Mailing Lists">User 
Mailing List</a>.</p>
-
-<hr />
+<div class="paragraph">
+<p>While the <a href="/authentication.html">Authentication</a> documentation 
explains the concepts and workflow of authentication in Shiro,
+the Authenticator represents the actual implementation component that performs 
identity verification.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authenticator-Role">Role in the SecurityManager</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <a href="/securitymanager.html">SecurityManager</a> does not perform 
authentication directly.
+Instead, it delegates authentication requests to its internal 
<code>Authenticator</code> instance.
+When a <a href="/subject.html">Subject</a> calls <a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#login(org.apache.shiro.authc.AuthenticationToken)"><code>login(token)</code></a>,
+the SecurityManager receives the request and immediately delegates to the 
Authenticator by calling
+<a 
href="/static/current/apidocs/org/apache/shiro/authc/Authenticator.html#authenticate(org.apache.shiro.authc.AuthenticationToken)"><code>authenticate(token)</code></a>.</p>
+</div>
+<div class="paragraph">
+<p>The Authenticator takes the submitted <a 
href="/static/current/apidocs/org/apache/shiro/authc/AuthenticationToken.html"><code>AuthenticationToken</code></a>
+and uses it to verify the Subject&#8217;s identity.
+If verification succeeds, it returns an <a 
href="/static/current/apidocs/org/apache/shiro/authc/AuthenticationInfo.html"><code>AuthenticationInfo</code></a>
 object.
+If verification fails, it throws an <a 
href="/static/current/apidocs/org/apache/shiro/authc/AuthenticationException.html"><code>AuthenticationException</code></a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authenticator-ModularRealmAuthenticator">ModularRealmAuthenticator</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Shiro uses the <a 
href="/static/current/apidocs/org/apache/shiro/authc/pam/ModularRealmAuthenticator.html"><code>ModularRealmAuthenticator</code></a>
+by default.
+This implementation supports coordinating one or more <a 
href="/realm.html">Realms</a> during the authentication process.</p>
+</div>
+<div class="paragraph">
+<p>When an authentication token is submitted, the 
ModularRealmAuthenticator:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Iterates through configured Realms</p>
+</li>
+<li>
+<p>Calls each Realm&#8217;s <a 
href="/static/current/apidocs/org/apache/shiro/realm/Realm.html#supports(org.apache.shiro.authc.AuthenticationToken)"><code>supports(token)</code></a>
 method to determine if the Realm can process the token</p>
+</li>
+<li>
+<p>If a Realm supports the token, its <a 
href="/static/current/apidocs/org/apache/shiro/realm/Realm.html#getAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)"><code>getAuthenticationInfo(token)</code></a>
 method is invoked</p>
+</li>
+<li>
+<p>Returns authentication information if successful, or throws an exception if 
failed</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authenticator-SingleVsMultipleRealms">Single vs. Multiple Realms</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The ModularRealmAuthenticator supports both configurations:</p>
+</div>
+<div class="paragraph">
+<p><strong>Single Realm</strong>:
+When only one Realm is configured, the Authenticator directly invokes that 
Realm to verify the Subject&#8217;s credentials.</p>
+</div>
+<div class="paragraph">
+<p><strong>Multiple Realms</strong>:
+When multiple Realms are configured, the Authenticator uses an <a 
href="/static/current/apidocs/org/apache/shiro/authc/pam/AuthenticationStrategy.html"><code>AuthenticationStrategy</code></a>
+to determine how to coordinate authentication across the Realms.
+This is a <a 
href="https://en.wikipedia.org/wiki/Pluggable_Authentication_Modules";>PAM</a>-style
 approach where each Realm can be consulted in sequence.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authenticator-AuthenticationStrategy">AuthenticationStrategy</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>When multiple Realms are configured, the Authenticator must determine if 
the overall authentication attempt succeeds or fails.
+The <a 
href="/static/current/apidocs/org/apache/shiro/authc/pam/AuthenticationStrategy.html"><code>AuthenticationStrategy</code></a>
 makes this determination.</p>
+</div>
+<div class="paragraph">
+<p>Shiro provides three built-in strategies:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><strong>FirstSuccessfulStrategy</strong>: Consults Realms in order until 
one succeeds. Remaining Realms are not consulted.</p>
+</li>
+<li>
+<p><strong>AtLeastOneSuccessfulStrategy</strong>: Returns success if at least 
one Realm succeeds. Other Realms continue to be consulted.</p>
+</li>
+<li>
+<p><strong>AllSuccessfulStrategy</strong>: All Realms must succeed for 
authentication to succeed. This is the most restrictive.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>You can configure which strategy the Authenticator uses, or implement your 
own strategy for custom behavior.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authenticator-Configuration">Configuration</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can configure a custom Authenticator in your Shiro configuration if 
needed:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-ini hljs" 
data-lang="ini">authenticator = com.foo.bar.CustomAuthenticator
+securityManager.authenticator = $authenticator</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can also configure the AuthenticationStrategy:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-ini hljs" 
data-lang="ini">authenticationStrategy = 
org.apache.shiro.authc.pam.FirstSuccessfulStrategy
+authenticator.authenticationStrategy = $authenticationStrategy</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>However, in most cases, the default ModularRealmAuthenticator with the 
default strategy is sufficient for typical applications.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authenticator-RealmInteraction">How Authenticators Work with 
Realms</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Authenticator does not directly know how to verify credentials.
+Instead, it coordinates with configured Realms to perform the actual 
verification.</p>
+</div>
+<div class="paragraph">
+<p>A <a href="/realm.html">Realm</a> is a security-specific data access object 
that can locate and validate user credentials from a data source
+(database, LDAP, file system, etc.).
+The Realm is responsible for:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Determining if it understands the submitted AuthenticationToken via its 
<code>supports(token)</code> method</p>
+</li>
+<li>
+<p>Looking up the user in the data source</p>
+</li>
+<li>
+<p>Comparing submitted credentials with those stored in the data source</p>
+</li>
+<li>
+<p>Returning the user&#8217;s authentication information if credentials 
match</p>
+</li>
+<li>
+<p>Throwing an exception if credentials do not match</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The Authenticator simply orchestrates this process by delegating to Realms 
in order and handling the results according to its configured strategy.</p>
+</div>
+</div>
+</div>
+       <hr />
 
 </div> 
 
diff --git a/authorization.html b/authorization.html
index 560292bee..99bd6df71 100644
--- a/authorization.html
+++ b/authorization.html
@@ -1030,6 +1030,9 @@ public void updateAccount(Account account) {
 <div class="sect2">
 <h3 id="Authentication-AuthorizingSubjects-ModularRealmAuthorizer">Modular 
Realm Authorizer</h3>
 <div class="paragraph">
+<p>For a standalone overview of the component, see <a 
href="authorizer.html">Apache Shiro Authorizers</a>.</p>
+</div>
+<div class="paragraph">
 <p>As mentioned earlier, the Shiro <code>SecurityManager</code> 
implementations default to using a <a 
href="static/current/apidocs/org/apache/shiro/authz/ModularRealmAuthorizer.html"><code>ModularRealmAuthorizer</code></a>
 instance. The <code>ModularRealmAuthorizer</code> equally supports 
applications with single Realm as well as those with multiple realms.</p>
 </div>
 <div class="paragraph">
diff --git a/authorizer.html b/authorizer.html
index ea4dad0be..2324e4516 100644
--- a/authorizer.html
+++ b/authorizer.html
@@ -18,20 +18,27 @@
 <html lang="en">
   <head>
     <meta charset="utf-8"/>
-    <title>Authorizer | Apache Shiro</title>
+    <title>Apache Shiro Authorizers | Apache Shiro</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="keywords" content='documentation,todo,lend-a-hand'>
+    <meta name="description" content="Understanding Apache Shiro Authorizers - 
the component that determines what authenticated users are allowed to do. Learn 
how Authorizers work with Realms to evaluate permissions and roles.">
+    <meta property="og:description" content="Understanding Apache Shiro 
Authorizers - the component that determines what authenticated users are 
allowed to do. Learn how Authorizers work with Realms to evaluate permissions 
and roles.">
+    <meta name="keywords" 
content='authorizer,authorization,access-control,permissions,roles'>
     <meta name="generator" content="JBake">
     <meta name="google-site-verification" 
content="QIax6uT5UX3enoU0G8Pz2pXbQ45KaQuHZ3nCh9V27mw">
     <meta name="google-site-verification" 
content="ecFap6dWJgS_GCCtxmJQJ_nFYQhM6EgSpBPZDU7xsCE">
     <meta name="google-site-verification" 
content="gBTYOG8lMfNb_jrWrH3kFbudpEs_WrAJ2lb2-zLRaso"/>
     <meta name="msvalidate.01" content="0B57EB46CBFAD8FD45008D2DB6B6C68C">
 
-    <meta property="og:title" content="Authorizer | Apache Shiro"/>
-    <meta property="og:type" content="website"/>
-    <meta property="article:tag" content='documentation'/>
-    <meta property="article:tag" content='todo'/>
-    <meta property="article:tag" content='lend-a-hand'/>
+    <meta property="og:title" content="Apache Shiro Authorizers | Apache 
Shiro"/>
+    <meta property="og:type" content="article"/>
+      <meta name="twitter:card" content="summary" />
+    <meta name="twitter:site" content="@ApacheShiro" />
+    <meta property="article:modification_time" content="2010-03-18T00:00:00Z"/>
+    <meta property="article:tag" content='authorizer'/>
+    <meta property="article:tag" content='authorization'/>
+    <meta property="article:tag" content='access-control'/>
+    <meta property="article:tag" content='permissions'/>
+    <meta property="article:tag" content='roles'/>
     <meta property="og:locale" content="en_US" />
     <meta property="og:url" 
content='https://shiro.apache.org/authorizer.html'/>
     <meta property="og:image" content='images/shiro-featured-image.png'/>
@@ -196,26 +203,242 @@
       </div>
     </nav>
 
-  <div class="page-header">
-    <h1>Authorizer</h1>
+       <div class="page-header">
+               <h1>Apache Shiro Authorizers</h1>
+       </div>
+
+
+  <div class="admonitionblock tip">
+    <table>
+      <tbody>
+        <tr>
+          <td class="icon">
+            <div class="title">Handy Hint</div>
+          </td>
+          <td class="content">
+            <div class="title">Shiro v1 and v2 version end-of-life notice</div>
+            <div class="paragraph">
+              <p>As of February 28, 2024, Shiro v1 was superseded by v2.<p>
+              <p>As of June 29, 2026, Shiro v2 was superseded by v3.<p>
+            </div>
+          </td>
+        </tr>
+      </tbody>
+    </table>
   </div>
 
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#Authorizer-Role">Role in the SecurityManager</a></li>
+<li><a 
href="#Authorizer-ModularRealmAuthorizer">ModularRealmAuthorizer</a></li>
+<li><a href="#Authorizer-PermissionAndRoleChecks">Permission and Role 
Checks</a>
+<ul class="sectlevel2">
+<li><a href="#Authorizer-PermissionChecks">Permission Checks</a></li>
+<li><a href="#Authorizer-RoleChecks">Role Checks</a></li>
+</ul>
+</li>
+<li><a href="#Authorizer-Configuration">Configuration</a></li>
+<li><a href="#Authorizer-RealmInteraction">How Authorizers Work with 
Realms</a></li>
+<li><a href="#Authorizer-MultipleRealms">Authorization with Multiple 
Realms</a></li>
+</ul>
+</div>
+<div id="preamble">
+<div class="sectionbody">
 <div class="paragraph">
-<p>TODO</p>
+<p>An <code>Authorizer</code> is a component responsible for determining 
whether a user is allowed to perform a certain action.
+It evaluates whether a <code>Subject</code> has the necessary permissions or 
roles to access a resource or perform an operation.</p>
 </div>
-<hr />
-
-<h2><a id="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 correcting, 
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>
+<div class="paragraph">
+<p>While the <a href="/authorization.html">Authorization</a> documentation 
explains the concepts and workflow of access control in Shiro,
+the Authorizer represents the actual implementation component that performs 
access control decisions.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authorizer-Role">Role in the SecurityManager</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <a href="/securitymanager.html">SecurityManager</a> does not perform 
authorization checks directly.
+Instead, it delegates authorization decisions to its internal 
<code>Authorizer</code> instance.
+When a <a href="/subject.html">Subject</a> calls authorization methods such as
+<a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#hasRole(java.lang.String)"><code>hasRole(role)</code></a>,
+<a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermitted(org.apache.shiro.authz.Permission)"><code>isPermitted(permission)</code></a>,
+or their variants, the SecurityManager delegates to the Authorizer.</p>
+</div>
+<div class="paragraph">
+<p>The Authorizer determines whether the Subject is permitted to perform the 
requested action by checking the Subject&#8217;s roles and permissions.
+If the Subject has the necessary role or permission, the authorization check 
passes.
+If not, an <a 
href="/static/current/apidocs/org/apache/shiro/authz/AuthorizationException.html"><code>AuthorizationException</code></a>
 may be thrown.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authorizer-ModularRealmAuthorizer">ModularRealmAuthorizer</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Shiro uses the <a 
href="/static/current/apidocs/org/apache/shiro/authz/ModularRealmAuthorizer.html"><code>ModularRealmAuthorizer</code></a>
+by default.
+This implementation supports coordinating one or more <a 
href="/realm.html">Realms</a> during the authorization process.</p>
+</div>
+<div class="paragraph">
+<p>When an authorization check is performed, the ModularRealmAuthorizer:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Iterates through configured Realms</p>
+</li>
+<li>
+<p>For each Realm that implements the <code>Authorizer</code> interface, calls 
the corresponding authorization method
+(<code>hasRole*</code>, <code>checkRole*</code>, <code>isPermitted*</code>, or 
<code>checkPermission*</code>)</p>
+</li>
+<li>
+<p>Aggregates and evaluates the results according to Shiro&#8217;s 
authorization semantics</p>
+</li>
+<li>
+<p>Returns the authorization decision to the caller</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>It is important to note that the ModularRealmAuthorizer treats Realms 
differently depending on whether they implement the <code>Authorizer</code> 
interface.
+If a Realm does not implement <code>Authorizer</code>, it is not consulted for 
authorization checks.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authorizer-PermissionAndRoleChecks">Permission and Role Checks</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Authorizer performs two types of authorization checks:</p>
+</div>
+<div class="sect2">
+<h3 id="Authorizer-PermissionChecks">Permission Checks</h3>
+<div class="paragraph">
+<p>Permission checks verify whether a Subject is allowed to perform a specific 
action on a specific resource.
+Methods for permission checks include:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermitted(org.apache.shiro.authz.Permission)"><code>isPermitted(permission)</code></a>
 - returns <code>true</code> or <code>false</code></p>
+</li>
+<li>
+<p><a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#checkPermission(org.apache.shiro.authz.Permission)"><code>checkPermission(permission)</code></a>
 - throws an exception on failure</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" 
data-lang="java">if (subject.isPermitted("account:read")) {
+    //User can read accounts
+}
 
-<p>The easiest way to contribute your documentation is to submit a 
pull-request by clicking on the <code>Edit</code> link below,
-  or send it to the <a href="mailing-lists.html" title="Mailing Lists">User 
Mailing List</a>.</p>
+subject.checkPermission("document:delete:report123");</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="Authorizer-RoleChecks">Role Checks</h3>
+<div class="paragraph">
+<p>Role checks verify whether a Subject has a specific role. Methods for role 
checks include:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#hasRole(java.lang.String)"><code>hasRole(role)</code></a>
 - returns <code>true</code> or <code>false</code></p>
+</li>
+<li>
+<p><a 
href="/static/current/apidocs/org/apache/shiro/subject/Subject.html#checkRole(java.lang.String)"><code>checkRole(role)</code></a>
 - throws an exception on failure</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" 
data-lang="java">if (subject.hasRole("admin")) {
+    //User is an administrator
+}
 
-<hr />
+subject.checkRole("user");</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authorizer-Configuration">Configuration</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can configure a custom Authorizer in your Shiro configuration if 
needed:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-ini hljs" 
data-lang="ini">authorizer = com.foo.bar.CustomAuthorizer
+securityManager.authorizer = $authorizer</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>However, in most cases, the default ModularRealmAuthorizer is sufficient 
for typical applications.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authorizer-RealmInteraction">How Authorizers Work with Realms</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Authorizer does not directly know where to retrieve authorization data.
+Instead, it coordinates with configured Realms to perform the actual 
authorization checks.</p>
+</div>
+<div class="paragraph">
+<p>A <a href="/realm.html">Realm</a> is a security-specific data access object 
that knows how to retrieve authorization data from a data source
+(database, LDAP, file system, etc.).
+The Realm is responsible for:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Determining if it implements the <code>Authorizer</code> interface (which 
indicates it can perform authorization checks)</p>
+</li>
+<li>
+<p>Retrieving the Subject&#8217;s roles and permissions from the data 
source</p>
+</li>
+<li>
+<p>Evaluating whether the Subject has the requested role or permission</p>
+</li>
+<li>
+<p>Returning the results of the authorization check</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The Authorizer simply orchestrates this process by delegating to Realms and 
aggregating their results.
+This allows you to use multiple Realms where authorization data may come from 
different sources,
+and Shiro will coordinate the results appropriately.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="Authorizer-MultipleRealms">Authorization with Multiple Realms</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>When multiple Realms are configured, the ModularRealmAuthorizer consults 
all Realms that implement the <code>Authorizer</code> interface.
+The results are aggregated to determine the final authorization decision.</p>
+</div>
+<div class="paragraph">
+<p>Typically, if any Realm grants permission or role membership, the 
authorization check succeeds.
+However, the exact behavior depends on the authorization data model and how 
the Realms are configured.
+Custom Authorizer implementations can be used to implement different 
aggregation strategies if needed.</p>
+</div>
+</div>
+</div>
+       <hr />
 
 </div> 
 
diff --git a/feed.xml b/feed.xml
index 38d2f0d27..76fc82f6e 100644
--- a/feed.xml
+++ b/feed.xml
@@ -4,7 +4,7 @@
   <subtitle>Simple. Java. Security.</subtitle>
   <link href="https://shiro.apache.org/"/>
   <link rel="self" href="https://shiro.apache.org/feed.xml"; />
-  <updated>2026-09-23T23:09:39Z</updated>
+  <updated>2026-10-11T05:39:47Z</updated>
 
   <author>
     <name>Les Hazlewood</name>
diff --git a/issues.html b/issues.html
index 1aba1e9dc..bd8c9aacf 100644
--- a/issues.html
+++ b/issues.html
@@ -20,9 +20,9 @@
     <meta charset="utf-8"/>
     <title>Apache Shiro Bug &amp; Issue Tracking | Apache Shiro</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="Report bugs, request features, and track 
issues for Apache Shiro using GitHub Issues tracking system.">
-    <meta property="og:description" content="Report bugs, request features, 
and track issues for Apache Shiro using GitHub Issues tracking system.">
-    <meta name="keywords" content='issues,bugs,jira,bug-tracking,support'>
+    <meta name="description" content="Report bugs, request features, and track 
issues for Apache Shiro using GitHub Issues.">
+    <meta property="og:description" content="Report bugs, request features, 
and track issues for Apache Shiro using GitHub Issues.">
+    <meta name="keywords" content='issues,bugs,bug-tracking,support'>
     <meta name="generator" content="JBake">
     <meta name="google-site-verification" 
content="QIax6uT5UX3enoU0G8Pz2pXbQ45KaQuHZ3nCh9V27mw">
     <meta name="google-site-verification" 
content="ecFap6dWJgS_GCCtxmJQJ_nFYQhM6EgSpBPZDU7xsCE">
@@ -36,7 +36,6 @@
     <meta property="article:modification_time" content="2010-03-18T00:00:00Z"/>
     <meta property="article:tag" content='issues'/>
     <meta property="article:tag" content='bugs'/>
-    <meta property="article:tag" content='jira'/>
     <meta property="article:tag" content='bug-tracking'/>
     <meta property="article:tag" content='support'/>
     <meta property="og:locale" content="en_US" />
diff --git a/sitemap.xml b/sitemap.xml
index 3ead291f8..70ad7d6b3 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -56,6 +56,10 @@
         <loc>https://shiro.apache.org/get-started.html</loc>
         <lastmod>2010-03-18</lastmod>
     </url>
+    <url>
+        <loc>https://shiro.apache.org/authorizer.html</loc>
+        <lastmod>2010-03-18</lastmod>
+    </url>
     <url>
         <loc>https://shiro.apache.org/java-cryptography-guide.html</loc>
         <lastmod>2010-03-18</lastmod>
@@ -112,6 +116,10 @@
         <loc>https://shiro.apache.org/commercial-support.html</loc>
         <lastmod>2010-03-18</lastmod>
     </url>
+    <url>
+        <loc>https://shiro.apache.org/authenticator.html</loc>
+        <lastmod>2010-03-18</lastmod>
+    </url>
     <url>
         <loc>https://shiro.apache.org/what-is-shiro.html</loc>
         <lastmod>2010-03-18</lastmod>
@@ -568,14 +576,6 @@
         <loc>https://shiro.apache.org/release-archive.html</loc>
         <lastmod>2022-06-28</lastmod>
     </url>
-    <url>
-        <loc>https://shiro.apache.org/authorizer.html</loc>
-        <lastmod>2026-05-25</lastmod>
-    </url>
-    <url>
-        <loc>https://shiro.apache.org/authenticator.html</loc>
-        <lastmod>2026-05-25</lastmod>
-    </url>
     <url>
         <loc>https://shiro.apache.org/team.html</loc>
         <lastmod>2023-02-08</lastmod>

Reply via email to