<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/1.8.0/javadoc/org/apache/ignite/plugin/security/package-frame.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<!-- Generated by javadoc (version 1.7.0_80) on Mon Dec 05 14:49:09 MSK 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>org.apache.ignite.plugin.security (Ignite 1.8.0)</title>
<meta name="date" content="2016-12-05">
<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<h1 class="bar"><a href="../../../../../org/apache/ignite/plugin/security/package-summary.html" target="classFrame">org.apache.ignite.plugin.security</a></h1>
<div class="indexContainer">
<h2 title="Interfaces">Interfaces</h2>
<ul title="Interfaces">
<li><a href="SecurityCredentialsProvider.html" title="interface in org.apache.ignite.plugin.security" target="classFrame"><i>SecurityCredentialsProvider</i></a></li>
<li><a href="SecurityPermissionSet.html" title="interface in org.apache.ignite.plugin.security" target="classFrame"><i>SecurityPermissionSet</i></a></li>
<li><a href="SecuritySubject.html" title="interface in org.apache.ignite.plugin.security" target="classFrame"><i>SecuritySubject</i></a></li>
</ul>
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="AuthenticationContext.html" title="class in org.apache.ignite.plugin.security" target="classFrame">AuthenticationContext</a></li>
<li><a href="SecurityBasicPermissionSet.html" title="class in org.apache.ignite.plugin.security" target="classFrame">SecurityBasicPermissionSet</a></li>
<li><a href="SecurityCredentials.html" title="class in org.apache.ignite.plugin.security" target="classFrame">SecurityCredentials</a></li>
<li><a href="SecurityCredentialsBasicProvider.html" title="class in org.apache.ignite.plugin.security" target="classFrame">SecurityCredentialsBasicProvider</a></li>
<li><a href="SecurityPermissionSetBuilder.html" title="class in org.apache.ignite.plugin.security" target="classFrame">SecurityPermissionSetBuilder</a></li>
</ul>
<h2 title="Enums">Enums</h2>
<ul title="Enums">
<li><a href="SecurityPermission.html" title="enum in org.apache.ignite.plugin.security" target="classFrame">SecurityPermission</a></li>
<li><a href="SecuritySubjectType.html" title="enum in org.apache.ignite.plugin.security" target="classFrame">SecuritySubjectType</a></li>
</ul>
<h2 title="Exceptions">Exceptions</h2>
<ul title="Exceptions">
<li><a href="SecurityException.html" title="class in org.apache.ignite.plugin.security" target="classFrame">SecurityException</a></li>
</ul>
</div>
</body>
</html>
