<!DOCTYPE html>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-  2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>Apache Shiro Realms | Apache Shiro</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="keywords" content='documentation,support,community,mailing lists,forums,issues,bugs'>
    <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="Apache Shiro Realms | 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='documentation'/>
    <meta property="article:tag" content='support'/>
    <meta property="article:tag" content='community'/>
    <meta property="article:tag" content='mailing lists'/>
    <meta property="article:tag" content='forums'/>
    <meta property="article:tag" content='issues'/>
    <meta property="article:tag" content='bugs'/>
    <meta property="og:locale" content="en_US" />
    <meta property="og:url" content='https://shiro.apache.org/realm.html'/>
    <meta property="og:image" content='images/shiro-featured-image.png'/>
    <meta property="og:image:width" content='1200'/>
    <meta property="og:image:height" content='628'/>
    <meta property="og:site_name" content="Apache Shiro"/>

    <!-- Le styles -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="bootstrap-icons-1.5.0/bootstrap-icons.css" rel="stylesheet">
    <link href="css/asciidoctor.css" rel="stylesheet">
    <link href="css/base.css" rel="stylesheet">
    <link href="highlight.js-11.2.0/styles/default.min.css" rel="stylesheet">
    <link href="css/gh-pages/gh-fork-ribbon.css" rel="stylesheet"/>

    <!-- Fav and touch icons -->
    <!--<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">-->
    <link rel="shortcut icon" href="favicon.ico">

    <!-- Matomo -->
    <script>
        var _paq = window._paq = window._paq || [];
        /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
        _paq.push(['disableCookies']);
        _paq.push(['trackPageView']);
        _paq.push(['enableLinkTracking']);
        (function() {
            var u="//matomo.privacy.apache.org/";
            _paq.push(['setTrackerUrl', u+'matomo.php']);
            _paq.push(['setSiteId', '2']);
            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
            g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
        })();
    </script>
    <!-- End Matomo Code -->
  </head>
  <body>
    <div id="top-bar"></div>
    <a class="github-fork-ribbon right-top" href="https://github.com/apache/shiro" title="Fork me on GitHub">Fork me on GitHub</a>

    <div id="wrap">

      <div class="masthead">
        <p class="lead">
          <a href="index.html"><img src="images/apache-shiro-logo.png" style="height:100px; width:auto; vertical-align: bottom; margin-top: 20px;" alt="Apache Shiro Logo"></a>
          <span class="tagline">Simple. Java. Security.</span>
          <a class="pull-right" href="https://www.apache.org/events/current-event.html">
            <img style="padding-top: 8px" src="https://www.apache.org/events/current-event-125x125.png" alt="Apache Software Foundation Event Banner"/>
          </a>
        </p>
      </div>

	<!-- Fixed navbar -->
    <nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm mb-4">
      <div class="container-fluid">
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav me-auto mb-2 mb-lg-0">
            <li class="nav-item">
              <a class="nav-link" href="get-started.html">Get Started</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="documentation.html">Docs</a>
            </li>

            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-webapps" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Web Apps
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-webapps">
                <li><a class="dropdown-item" href="web.html">General</a></li>
                <li><a class="dropdown-item" href="jaxrs.html">JAX-RS</a></li>
                <li><a class="dropdown-item" href="jakarta-ee.html">Jakarta EE</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="web-features.html">Features</a></li>
              </ul>
            </li>

            <li><a class="nav-link" href="features.html">Features</a></li>

            <!-- integrations -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-integrations" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Integrations
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-integrations">
                <li><a class="dropdown-item" href="spring-boot.html">Spring</a></li>
                <li><a class="dropdown-item" href="guice.html">Guice</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="integration.html">Third-Party Integrations</a></li>
              </ul>
            </li>

            <!-- Community -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-community" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Community
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-community">
                <li><a class="dropdown-item" href="forums.html">Community Forums</a></li>
                <li><a class="dropdown-item" href="mailing-lists.html">Mailing Lists</a></li>
                <li><a class="dropdown-item" href="articles.html">Articles</a></li>
                <li><a class="dropdown-item" href="news.html">News</a></li>
                <li><a class="dropdown-item" href="events.html">Events</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="community.html">More</a></li>
              </ul>
            </li>

            <!-- About -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-about" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                About
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-about">
                <li><a class="dropdown-item" href="about.html">About</a></li>
                <li><a class="dropdown-item" href="privacy-policy.html">Privacy Policy</a></li>
                <li><a class="dropdown-item" href="security-reports.html">Vulnerability Reports</a></li>
              </ul>
            </li>
          </ul>

          <ul class="d-flex justify-content-end navbar-nav mb-2 mb-lg-0">
            <!-- The ASF -->
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-asf" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Apache Software Foundation
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown-asf">
                <li><a class="dropdown-item" href="https://www.apache.org/">Apache Homepage</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/licenses/">License</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                <li><a class="dropdown-item" href="https://www.apache.org/security/">Security</a></li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>

	<div class="page-header">
		<h1>Apache Shiro Realms</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 version notice</div>
            <div class="paragraph">
              <p>As of 2024-03-01, Shiro v1 will soon be superseded by v2.<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="#Realm-RealmConfiguration">Realm Configuration</a>
<ul class="sectlevel2">
<li><a href="#Realm-ExplicitAssignment">Explicit Assignment</a></li>
<li><a href="#Realm-ImplicitAssignment">Implicit Assignment</a></li>
</ul>
</li>
<li><a href="#Realm-RealmAuthentication">Realm Authentication</a>
<ul class="sectlevel2">
<li><a href="#realm_supporting_authentication_Tokens">Supporting <code>AuthenticationTokens</code></a></li>
<li><a href="#Realm-Handling-supported-AuthenticationTokens">Handling supported <code>AuthenticationTokens</code></a></li>
<li><a href="#Realm-CredentialsMatching">Credentials Matching</a></li>
<li><a href="#Realm-DisablingAuthentication">Disabling Authentication</a></li>
</ul>
</li>
<li><a href="#Realm-RealmAuthorization">Realm Authorization</a>
<ul class="sectlevel2">
<li><a href="#Realm-RoleBasedAuthorization">Role based Authorization</a></li>
<li><a href="#Realm-PermissionBasedAuthorization">Permission based Authorization</a></li>
</ul>
</li>
</ul>
</div>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>A <code>Realm</code> is a component that can access application-specific security data such as users, roles and permissions.
The <code>Realm</code> translates this application-specific data into a format that Shiro understands so Shiro can in turn provide a single easy-to-understand <a href="/subject.html">Subject</a> programming API no matter how many data sources exist or how application-specific your data might be.</p>
</div>
<div class="paragraph">
<p>Realms usually have a 1-to-1 correlation with a data source such as a relational database, LDAP directory, file system, or other similar resource.
As such, implementations of the <code>Realm</code> interface use data source-specific APIs to discover authorization data (roles, permissions, etc), such as JDBC, File IO, Hibernate or JPA, or any other Data Access API.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>A Realm is essentially a security-specific <a href="https://en.wikipedia.org/wiki/Data_Access_Object">DAO</a>.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Because most of these data sources usually store both authentication data (credentials such as passwords) as well as authorization data (such as roles or permissions), every Shiro <code>Realm</code> can perform <em>both</em> authentication and authorization operations.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="Realm-RealmConfiguration">Realm Configuration</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If using Shiro&#8217;s INI configuration, you define and reference <code>Realms</code> like any other object in the <code>[main]</code> section, but they are configured on the <code>securityManager</code> in one of two ways: explicitly or implicitly.</p>
</div>
<div class="sect2">
<h3 id="Realm-ExplicitAssignment">Explicit Assignment</h3>
<div class="paragraph">
<p>Based on knowledge of INI configuration thus far, this is an obvious configuration approach.
After defining one or more Realms, you set them as a collection property on the <code>securityManager</code> object.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-ini hljs" data-lang="ini">fooRealm = com.company.foo.Realm
barRealm = com.company.another.Realm
bazRealm = com.company.baz.Realm

securityManager.realms = $fooRealm, $barRealm, $bazRealm</code></pre>
</div>
</div>
<div class="paragraph">
<p>Explicit assignment is deterministic - you control exactly which realms are used as well as <em>the order</em> that they will be used for authentication and authorization.
Realm ordering effects are described in detail in the Authentication chapter&#8217;s <a href="authentication.html#Authentication-AuthenticationSequence">Authentication Sequence</a> section.</p>
</div>
</div>
<div class="sect2">
<h3 id="Realm-ImplicitAssignment">Implicit Assignment</h3>
<div class="admonitionblock caution">
<table>
<tr>
<td class="icon">
<i class="fa icon-caution" title="Caution"></i>
</td>
<td class="content">
<div class="title">Not Preferred</div>
<div class="paragraph">
<p>Implicit assignment can cause unexpected behavior if you change the order in which realms are defined.
It is recommended that you avoid this approach and use Explicit Assignment, which has deterministic behavior.
It is likely Implicit Assignment will be deprecated/removed from a future Shiro release.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If for some reason you don&#8217;t want to explicitly configure the <code>securityManager.realms</code> property, you can allow Shiro to detect all configured realms and assign them to the <code>securityManager</code> directly.</p>
</div>
<div class="paragraph">
<p>Using this approach, realms are assigned to the <code>securityManager</code> instance in the <em>order that they are defined</em>.</p>
</div>
<div class="paragraph">
<p>That is, for the following <code>shiro.ini</code> example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-ini hljs" data-lang="ini">blahRealm = com.company.blah.Realm
fooRealm = com.company.foo.Realm
barRealm = com.company.another.Realm

# no securityManager.realms assignment here</code></pre>
</div>
</div>
<div class="paragraph">
<p>basically has the same effect as if the following line were appended:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">securityManager.realms = $blahRealm, $fooRealm, $barRealm</code></pre>
</div>
</div>
<div class="paragraph">
<p>However, realize that with implicit assignment, just the order that the realms are defined directly affects how they are consulted during authentication and authorization attempts.
If you change their definition order, you will change how the main `Authenticator&#8217;s <a href="authentication.html#Authentication-AuthenticationSequence">Authentication Sequence</a> functions.</p>
</div>
<div class="paragraph">
<p>For this reason, and to ensure deterministic behavior, we recommend using Explicit Assignment instead of Implicit Assignment.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="Realm-RealmAuthentication">Realm Authentication</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Once you understand Shiro&#8217;s main <a href="/authentication.html#Authentication-sequence">Authentication workflow</a>, it is important to know exactly what happens when the <code>Authenticator</code> interacts with a <code>Realm</code> during an authentication attempt.</p>
</div>
<div class="sect2">
<h3 id="realm_supporting_authentication_Tokens">Supporting <code>AuthenticationTokens</code></h3>
<div class="paragraph">
<p>As mentioned in the <a href="/authentication.html#Authentication-AuthenticationSequence">authentication sequence</a>, just before a <code>Realm</code> is consulted to perform an authentication attempt, its <a href="static/current/apidocs/org/apache/shiro/realm/Realm.html#supports(org.apache.shiro.authc.AuthenticationToken)"><code>supports</code></a> method is called.
If the return value is <code>true</code>, only then will its <code>getAuthenticationInfo(token)</code> method be invoked.</p>
</div>
<div class="paragraph">
<p>Typically, a realm will check the type (interface or class) of the submitted token to see if it can process it.
For example, a Realm that processes biometric data may not understand <code>UsernamePasswordTokens</code> at all, in which case it would return <code>false</code> from the <code>supports</code> method.</p>
</div>
</div>
<div class="sect2">
<h3 id="Realm-Handling-supported-AuthenticationTokens">Handling supported <code>AuthenticationTokens</code></h3>
<div class="paragraph">
<p>If a <code>Realm</code> <code>supports</code> a submitted <code>AuthenticationToken</code>, the <code>Authenticator</code> will call the Realm&#8217;s <a href="static/current/apidocs/org/apache/shiro/realm/Realm.html#getAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)">getAuthenticationInfo(token)</a> method.
This effectively represents an authentication attempt with the <code>Realm&#8217;s</code> backing data source.
The method, in order:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Inspects the <code>token</code> for the identifying principal (account identifying information)</p>
</li>
<li>
<p>Based on the <code>principal</code>, looks up corresponding account data in the data source</p>
</li>
<li>
<p>Ensures that the token&#8217;s supplied <code>credentials</code> matches those stored in the data store</p>
</li>
<li>
<p>If the credentials match, an <a href="/static/current/apidocs/org/apache/shiro/authc/AuthenticationInfo.html">AuthenticationInfo</a> instance is returned that encapsulates the account data in a format Shiro understands</p>
</li>
<li>
<p>If the credentials DO NOT match, an <a href="/static/current/apidocs/org/apache/shiro/authc/AuthenticationException.html">AuthenticationException</a> is thrown</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>This is the highest-level workflow for all Realm <code>getAuthenticationInfo</code> implementations.
Realms are free to do whatever they want during this method, such as record the attempt in an audit log, update data records, or anything else that makes sense for the authentication attempt for that data store.</p>
</div>
<div class="paragraph">
<p>The only thing required is that, if the credentials match for the given principal(s), that a non-null <code>AuthenticationInfo</code> instance is returned that represents Subject account information from that data source.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="title">Saving Time</div>
<div class="paragraph">
<p>Implementing
<a href="/static/current/apidocs/org/apache/shiro/realm/Realm.html">Realm</a>
interface directly might be time-consuming and error-prone.
Most people choose to subclass the
<a href="/static/current/apidocs/org/apache/shiro/realm/AuthorizingRealm.html">AuthorizingRealm</a>
abstract class instead of starting from scratch.
This class implements common authentication and authorization workflow to save you time and effort.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="Realm-CredentialsMatching">Credentials Matching</h3>
<div class="paragraph">
<p>In the above realm authentication workflow, a Realm has to verify that the <a href="subject.html">Subject</a>'s submitted credentials (e.g. password) must match the credentials stored in the data store.
If they match, authentication is considered successful, and the system has verified the end-user&#8217;s identity.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
<div class="title">Realm Credentials Matching</div>
<div class="paragraph">
<p>It is each Realm''s responsibility to match submitted credentials with those stored in the Realm''s backing data store, and not the <code>Authenticator&#8217;s</code> responsibility.
Each <code>Realm</code> has intimate knowledge of credentials format and storage and can perform detailed credentials matching, whereas the <code>Authenticator</code> is a generic workflow component.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The credentials matching process is nearly identical in all applications and usually only differs by the data compared.
To ensure this process is pluggable and customizable if necessary, the <a href="static/current/apidocs/org/apache/shiro/realm/AuthenticatingRealm.html">AuthenticatingRealm</a> and its subclasses support the concept of a <a href="static/current/apidocs/org/apache/shiro/authc/credential/CredentialsMatcher.html">CredentialsMatcher</a> to perform the credentials comparison.</p>
</div>
<div class="paragraph">
<p>After discovering account data, it and the submitted <code>AuthenticationToken</code> are presented to a <code>CredentialsMatcher</code> to see if what was submitted matches what is stored in the data store.</p>
</div>
<div class="paragraph">
<p>Shiro has some <code>CredentialsMatcher</code> implementations to get you started out of the box, such as the <a href="/static/current/apidocs/org/apache/shiro/authc/credential/SimpleCredentialsMatcher.html">SimpleCredentialsMatcher</a> and <a href="/static/current/apidocs/org/apache/shiro/authc/credential/HashedCredentialsMatcher.html">HashedCredentialsMatcher</a> implementations, but if you wanted to configure a custom implementation for custom matching logic, you could do so directly:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Realm myRealm = new com.company.shiro.realm.MyRealm();
CredentialsMatcher customMatcher = new com.company.shiro.realm.CustomCredentialsMatcher();
myRealm.setCredentialsMatcher(customMatcher);</code></pre>
</div>
</div>
<div class="paragraph">
<p>Or, if using Shiro&#8217;s INI <a href="/configuration.html">configuration</a>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-ini hljs" data-lang="ini">[main]
...
customMatcher = com.company.shiro.realm.CustomCredentialsMatcher
myRealm = com.company.shiro.realm.MyRealm
myRealm.credentialsMatcher = $customMatcher
...</code></pre>
</div>
</div>
<div class="sect3">
<h4 id="Realm-SimpleEqualityCheck">Simple Equality Check</h4>
<div class="paragraph">
<p>All of Shiro&#8217;s out-of-the-box <code>Realm</code> implementations default to using a <a href="static/current/apidocs/org/apache/shiro/authc/credential/SimpleCredentialsMatcher.html">SimpleCredentialsMatcher</a>.
The <code>SimpleCredentialsMatcher</code> performs a plain direct equality check of the stored account credentials with what was submitted in the <code>AuthenticationToken</code>.</p>
</div>
<div class="paragraph">
<p>For example, if a <a href="/static/current/apidocs/org/apache/shiro/authc/UsernamePasswordToken.html">UsernamePasswordToken</a> was submitted, the <code>SimpleCredentialsMatcher</code> verifies that the password submitted is exactly equal to the password stored in the database.</p>
</div>
<div class="paragraph">
<p>The <code>SimpleCredentialsMatcher</code> performs direct equality comparisons for more than just Strings though.
It can work with most common byte sources, such as Strings, character arrays, byte arrays, Files and InputStreams.
See its JavaDoc for more.</p>
</div>
</div>
<div class="sect3">
<h4 id="Realm-HashingCredentials">Hashing Credentials</h4>
<div class="paragraph">
<p>Instead of storing credentials in their raw form and performing raw/plain comparisons, a much more secure way of storing end-user&#8217;s credentials (e.g. passwords) is to one-way hash them first before storing them in the data store.</p>
</div>
<div class="paragraph">
<p>This ensures that end-users' credentials are never stored in their raw form and that no one can know the original/raw value.
This is a much more secure mechanism than plain-text or raw comparisons, and all security-conscious applications should favor this approach over non-hashed storage.</p>
</div>
<div class="paragraph">
<p>To support these preferred cryptographic hashing strategies, Shiro provides <a href="/static/current/apidocs/org/apache/shiro/authc/credential/HashedCredentialsMatcher.html">HashedCredentialsMatcher</a> implementations to be configured on realms instead of the aforementioned <code>SimpleCredentialsMatcher</code>.</p>
</div>
<div class="paragraph">
<p>Hashing credentials and the benefits of salting and multiple hash iterations are outside the scope of this <code>Realm</code> documentation, but definitely read the <a href="static/current/apidocs/org/apache/shiro/authc/credential/HashedCredentialsMatcher.html">HashedCredentialsMatcher JavaDoc</a> which covers these principles in detail.</p>
</div>
<div class="sect4">
<h5 id="Realm-HashingandCorrespondingMatchers">Hashing and Corresponding Matchers</h5>
<div class="paragraph">
<p>So how do you configure a Shiro-enabled application to do this easily?</p>
</div>
<div class="paragraph">
<p>Shiro provides multiple <code>HashedCredentialsMatcher</code> subclass implementations.
You must configure the specific implementation on your realm to match the hashing algorithm you use to hash your users' credentials.</p>
</div>
<div class="paragraph">
<p>For example, let&#8217;s say your application uses username/password pairs for authentication.
And due to the benefits of hashing credentials described above, let&#8217;s say you want to one-way hash a user&#8217;s password using the <a href="https://en.wikipedia.org/wiki/SHA_hash_functions">SHA-256</a> algorithm when you create a user account.
You would hash the user&#8217;s entered plain-text password and save that value:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import org.apache.shiro.crypto.hash.Sha256Hash;
import org.apache.shiro.crypto.RandomNumberGenerator;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
...

//We'll use a Random Number Generator to generate salts.  This
//is much more secure than using a username as a salt or not
//having a salt at all.  Shiro makes this easy.
//
//Note that a normal app would reference an attribute rather
//than create a new RNG every time:
RandomNumberGenerator rng = new SecureRandomNumberGenerator();
Object salt = rng.nextBytes();

//Now hash the plain-text password with the random salt and multiple
//iterations and then Base64-encode the value (requires less space than Hex):
String hashedPasswordBase64 = new Sha256Hash(plainTextPassword, salt, 1024).toBase64();

User user = new User(username, hashedPasswordBase64);
//save the salt with the new account.  The HashedCredentialsMatcher
//will need it later when handling login attempts:
user.setPasswordSalt(salt);
userDAO.create(user);</code></pre>
</div>
</div>
<div class="paragraph">
<p>Since you&#8217;re <code>SHA-256</code> hashing your user&#8217;s passwords, you need to tell Shiro to use the appropriate <code>HashedCredentialsMatcher</code> to match your hashing preferences.
In this example, we create a random salt and perform 1024 hash iterations for strong security (see the <code>HashedCredentialsMatcher</code> JavaDoc for why).
Here is the Shiro INI configuration to make this work:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-ini hljs" data-lang="ini">[main]
...
credentialsMatcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
# base64 encoding, not hex in this example:
credentialsMatcher.storedCredentialsHexEncoded = false
credentialsMatcher.hashIterations = 1024
# This next property is only needed in Shiro 1.0\.  Remove it in 1.1 and later:
credentialsMatcher.hashSalted = true

...
myRealm = com.company.....
myRealm.credentialsMatcher = $credentialsMatcher
...</code></pre>
</div>
</div>
</div>
<div class="sect4">
<h5 id="Realm-"><code>SaltedAuthenticationInfo</code></h5>
<div class="paragraph">
<p>The last thing to do to ensure this works is that your <code>Realm</code> implementation must return a <a href="/static/current/apidocs/org/apache/shiro/authc/SaltedAuthenticationInfo.html">SaltedAuthenticationInfo</a> instance instead of a normal <code>AuthenticationInfo</code> one.
The <code>SaltedAuthenticationInfo</code> interface ensures that the salt that you used when you created the user account (e.g. the <code>user.setPasswordSalt(salt);</code> call above) can be referenced by the <code>HashedCredentialsMatcher</code>.</p>
</div>
<div class="paragraph">
<p>The <code>HashedCredentialsMatcher</code> needs the salt in order to perform the same hashing technique on the submitted <code>AuthenticationToken</code> to see if the token matches what you saved in the data store.
So if you use salting for user passwords (and you should!!!), ensure your <code>Realm</code> implementation represents that by returning <code>SaltedAuthenticationInfo</code> instances.</p>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="Realm-DisablingAuthentication">Disabling Authentication</h3>
<div class="paragraph">
<p>If for some reason, you don&#8217;t want a Realm to perform authentication for a data source (maybe because you only want the Realm to perform authorization), you can disable a Realm&#8217;s support for authentication entirely by always returning <code>false</code> from the Realm&#8217;s <code>supports</code> method.
Then your realm will never be consulted during an authentication attempt.</p>
</div>
<div class="paragraph">
<p>Of course at least one configured <code>Realm</code> needs to be able to support AuthenticationTokens if you want to authenticate Subjects.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="Realm-RealmAuthorization">Realm Authorization</h2>
<div class="sectionbody">
<div class="paragraph">
<p><code>SecurityManager</code> delegates the task of <code>Permission</code> or <code>Role</code> checking to <a href="/static/current/apidocs/org/apache/shiro/authz/Authorizer.html">Authorizer</a>, defaulted to <a href="/static/current/apidocs/org/apache/shiro/authz/ModularRealmAuthorizer.html">ModularRealmAuthorizer</a>.</p>
</div>
<div class="sect2">
<h3 id="Realm-RoleBasedAuthorization">Role based Authorization</h3>
<div class="paragraph">
<p>When one of the overloaded method hasRoles or checkRoles method is called on Subject</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p><code>Subject</code> delegates to <code>SecurityManager</code> for identifying if the given Role is assigned</p>
</li>
<li>
<p><code>SecurityManager</code> then delegates to <code>Authorizer</code></p>
</li>
<li>
<p><a href="static/current/apidocs/org/apache/shiro/authz/Authorizer.html">Authorizer</a> then referrers to all the Authorizing Realms one by one until it found given role assigned to the subject.
Deny access by returning false if no none of the Realm grants Subject given Role</p>
</li>
<li>
<p>Authorizing Realm <a href="static/current/apidocs/org/apache/shiro/authz/AuthorizationInfo.html">AuthorizationInfo</a> getRoles() method to get all Roles assigned to Subject</p>
</li>
<li>
<p>Grant access if it found the given Role in list of roles returned from AuthorizationInfo.getRoles call.</p>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="Realm-PermissionBasedAuthorization">Permission based Authorization</h3>
<div class="paragraph">
<p>When one of the overloaded method <code>isPermitted()</code> or <code>checkPermission()</code> method are called on Subject:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p><code>Subject</code> delegates the task to grant or deny Permission to SecurityManager</p>
</li>
<li>
<p><code>SecurityManager</code> then delegates to Authorizer</p>
</li>
<li>
<p>Authorizer then referrers to all the Authorizer Realms one by one until it Permission is granted If Permission is not granted by any of the Authorizing Realm, Subject is denied Permission</p>
</li>
<li>
<p>Authorizing Realm does the following in order to check if a Subject is permitted:</p>
<div class="olist loweralpha">
<ol class="loweralpha">
<li>
<p>First it gets identify all Permissions assigned to Subject directly by calling getObjectPermissions() and getStringPermissions methods on <a href="/static/current/apidocs/org/apache/shiro/authz/AuthorizationInfo.html">AuthorizationInfo</a> and aggregating the results.</p>
</li>
<li>
<p>If a <a href="/static/current/apidocs/org/apache/shiro/authz/permission/RolePermissionResolver.html">RolePermissionResolver</a> is registered, it is used to retrieve Permissions based on all the roles assigned to Subject by calling the <code>RolePermissionResolver.resolvePermissionsInRole()</code></p>
</li>
<li>
<p>For aggregated Permissions from a. and b. the implies() method is called to check if any of these permission are implied the checked permission.
See <a href="/permissions.html#wildcard_permissions">WildcardPermission</a></p>
</li>
</ol>
</div>
</li>
</ol>
</div>
</div>
</div>
</div>
	<hr />

</div> 

    <div class="footer-padding"></div>

    <div class="container-fluid pt-2 border-top" id="custom-footer">
      <footer class="row justify-content-between align-items-center">
        <div class=" col-md-5">
          <div class="copyright-footer justify-content-start">
            <a href="https://www.apache.org/foundation/contributing.html">Donate to the ASF</a>&nbsp;|&nbsp;
            <a href="https://www.apache.org/licenses/LICENSE-2.0.html">License</a>&nbsp;
            <p class="text-muted">Copyright &copy; 2008-2024 The Apache Software Foundation</p>
          </div>
        </div>

        <div class="d-flex justify-content-center col-md-1">
          <a class="btn btn-social"><span class="social-icon social-twitter"><i class="bi bi-twitter"></i></span></a>
          <a class="btn btn-social"><span class="social-icon social-facebook"><i class="bi bi-facebook"></i></span></a>
          <a class="btn btn-social"><span class="social-icon social-linkedin"><i class="bi bi-linkedin"></i></span></a>
        </div>

        <div class="d-flex justify-content-end col-md-4" id="editThisPage">
          <input type="hidden" id="ghEditPage" value="https://github.com/apache/shiro-site/edit/main/src/site/content/realm.adoc"/>
        </div>

        <div class="d-flex col-md-2 justify-content-end" style="position: relative">
          <div class="footer-shield"></div>
        </div>
      </footer>
    </div>


    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="js/bootstrap.min.js"></script>
    <script src="highlight.js-11.2.0/highlight.min.js"></script>
    <script src="js/shiro.js"></script>

    <script>
        docReady(
          addPageEditLink()
      );
    </script>
    <script>hljs.highlightAll();</script>

    </body>
</html>
