<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>org.apache.geode.security (Apache Geode 1.15.1)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="org.apache.geode.security (Apache Geode 1.15.1)";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/geode/ra/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../org/apache/geode/services/result/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/geode/security/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.geode.security</h1>
<div class="docSummary">
<div class="block">Provides an API for plugging in authentication and authorization
for members of a distributed system and clients.</div>
</div>
<p>See:&nbsp;<a href="#package.description">Description</a></p>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/AccessControl.html" title="interface in org.apache.geode.security">AccessControl</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since Geode 1.0, use <a href="../../../../org/apache/geode/security/SecurityManager.html" title="interface in org.apache.geode.security"><code>SecurityManager</code></a> instead</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/Authenticator.html" title="interface in org.apache.geode.security">Authenticator</a></td>
<td class="colLast">Deprecated
<div class="block"><span class="deprecationComment">since Geode 1.0, use <a href="../../../../org/apache/geode/security/SecurityManager.html" title="interface in org.apache.geode.security"><code>SecurityManager</code></a> instead</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/AuthInitialize.html" title="interface in org.apache.geode.security">AuthInitialize</a></td>
<td class="colLast">
<div class="block">Specifies the mechanism to obtain credentials for a client or peer.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/PostProcessor.html" title="interface in org.apache.geode.security">PostProcessor</a></td>
<td class="colLast">
<div class="block">PostProcessor allows the customer to massage the values seen by a particular user.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/SecurableCommunicationChannels.html" title="interface in org.apache.geode.security">SecurableCommunicationChannels</a></td>
<td class="colLast">
<div class="block">This class defines all the static definitions for the
 <a href="../../../../org/apache/geode/distributed/ConfigurationProperties.html#SSL_ENABLED_COMPONENTS"><code>ConfigurationProperties.SSL_ENABLED_COMPONENTS</code></a> <U>Since</U>: Geode 1.0</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/SecurityManager.html" title="interface in org.apache.geode.security">SecurityManager</a></td>
<td class="colLast">
<div class="block">User implementation of a authentication/authorization logic for Integrated Security.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/ResourcePermission.html" title="class in org.apache.geode.security">ResourcePermission</a></td>
<td class="colLast">
<div class="block">ResourcePermission defines the resource, the operation, the region and the key involved in the
 action to be authorized.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Summary table, listing enums, and an explanation">
<caption><span>Enum Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Enum</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/AuthTokenEnabledComponents.html" title="enum in org.apache.geode.security">AuthTokenEnabledComponents</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/ResourcePermission.Operation.html" title="enum in org.apache.geode.security">ResourcePermission.Operation</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/ResourcePermission.Resource.html" title="enum in org.apache.geode.security">ResourcePermission.Resource</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/ResourcePermission.Target.html" title="enum in org.apache.geode.security">ResourcePermission.Target</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Exception Summary table, listing exceptions, and an explanation">
<caption><span>Exception Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Exception</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/AuthenticationExpiredException.html" title="class in org.apache.geode.security">AuthenticationExpiredException</a></td>
<td class="colLast">
<div class="block">This exception is thrown by the SecurityManager's authorize method to indicate that the
 authentication has expired.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/AuthenticationFailedException.html" title="class in org.apache.geode.security">AuthenticationFailedException</a></td>
<td class="colLast">
<div class="block">Thrown if authentication of this client/peer fails.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/AuthenticationRequiredException.html" title="class in org.apache.geode.security">AuthenticationRequiredException</a></td>
<td class="colLast">
<div class="block">Thrown if the distributed system is in secure mode and this client/peer has not set the security
 credentials.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/GemFireSecurityException.html" title="class in org.apache.geode.security">GemFireSecurityException</a></td>
<td class="colLast">
<div class="block">The base class for all org.apache.geode.security package related exceptions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/geode/security/NotAuthorizedException.html" title="class in org.apache.geode.security">NotAuthorizedException</a></td>
<td class="colLast">
<div class="block">Thrown when a client/peer is unauthorized to perform a requested operation.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package.description">
<!--   -->
</a>
<h2 title="Package org.apache.geode.security Description">Package org.apache.geode.security Description</h2>
<div class="block"><P>Provides an API for plugging in authentication and authorization
for members of a distributed system and clients.

<H3>GemFire security framework</H3>
The security framework tackles two requirements: authentication of nodes
and authorization for operations. The authentication piece deals with
authentication of nodes in a peer-to-peer network as well as of the clients
that connect to the servers.

<P>
<I>
It is not our plan to provide a sophisticated security infrastructure
built into GemFire. Most enterprise customers have their own authentication
and entitlement management infrastructure and our plan is make sure the
framework allows application administrators to delegate the responsibility
to external providers.
</I></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/geode/ra/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../org/apache/geode/services/result/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/geode/security/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
