blob: 0175e87a8f9596df861c775d99a76d192d8d8615 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SaslServerListener (Qpid ProtonJ2 Parent 1.0.0-M9 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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="SaslServerListener (Qpid ProtonJ2 Parent 1.0.0-M9 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":18};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SaslServerListener.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.qpid.protonj2.engine.sasl</a></div>
<h2 title="Interface SaslServerListener" class="title">Interface SaslServerListener</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public interface <span class="typeNameLabel">SaslServerListener</span></pre>
<div class="block">Listener for SASL frame arrival to facilitate relevant handling for the SASL
negotiation of the server side of the SASL exchange.
See the AMQP specification
<a href="http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-security-v1.0-os.html#doc-idp51040">
SASL negotiation process</a> overview for related detail.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#handleSaslHeader(org.apache.qpid.protonj2.engine.sasl.SaslServerContext,org.apache.qpid.protonj2.types.transport.AMQPHeader)">handleSaslHeader</a></span>&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context,
<a href="../../types/transport/AMQPHeader.html" title="class in org.apache.qpid.protonj2.types.transport">AMQPHeader</a>&nbsp;header)</code></th>
<td class="colLast">
<div class="block">Called when the SASL header has been received and the server is now ready to send the configured SASL
mechanisms.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#handleSaslInit(org.apache.qpid.protonj2.engine.sasl.SaslServerContext,org.apache.qpid.protonj2.types.Symbol,org.apache.qpid.protonj2.buffer.ProtonBuffer)">handleSaslInit</a></span>&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context,
<a href="../../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>&nbsp;mechanism,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;initResponse)</code></th>
<td class="colLast">
<div class="block">Called when a SASL init frame has arrived from the client indicating the chosen SASL mechanism
and the initial response data if any.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#handleSaslResponse(org.apache.qpid.protonj2.engine.sasl.SaslServerContext,org.apache.qpid.protonj2.buffer.ProtonBuffer)">handleSaslResponse</a></span>&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;response)</code></th>
<td class="colLast">
<div class="block">Called when a SASL response frame has arrived from the client.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#initialize(org.apache.qpid.protonj2.engine.sasl.SaslServerContext)">initialize</a></span>&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context)</code></th>
<td class="colLast">
<div class="block">Called to give the application code a clear point to initialize all the Server side expectations.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="initialize(org.apache.qpid.protonj2.engine.sasl.SaslServerContext)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;initialize&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context)</pre>
<div class="block">Called to give the application code a clear point to initialize all the Server side expectations.
<p>
The application should use this event to configure the server mechanisms and other server
authentication properties.
<p>
In the event that the server implementation cannot proceed with SASL authentication it should call the
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a> signal
the <a href="../Engine.html" title="interface in org.apache.qpid.protonj2.engine"><code>Engine</code></a> that it should transition to a failed state.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - the <a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslServerContext</code></a> used to authenticate the connection.</dd>
</dl>
</li>
</ul>
<a id="handleSaslHeader(org.apache.qpid.protonj2.engine.sasl.SaslServerContext,org.apache.qpid.protonj2.types.transport.AMQPHeader)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleSaslHeader</h4>
<pre class="methodSignature">void&nbsp;handleSaslHeader&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context,
<a href="../../types/transport/AMQPHeader.html" title="class in org.apache.qpid.protonj2.types.transport">AMQPHeader</a>&nbsp;header)</pre>
<div class="block">Called when the SASL header has been received and the server is now ready to send the configured SASL
mechanisms. The handler should respond be calling the <a href="SaslServerContext.html#sendMechanisms(org.apache.qpid.protonj2.types.Symbol%5B%5D)"><code>SaslServerContext.sendMechanisms(Symbol[])</code></a>
method immediately or later using the same thread that invoked this event handler.
<p>
In the event that the server implementation cannot proceed with SASL authentication it should call the
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a> to fail
the SASL negotiation and signal the <a href="../Engine.html" title="interface in org.apache.qpid.protonj2.engine"><code>Engine</code></a> that it should transition to a failed state.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - the <a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslServerContext</code></a> object that received the SASL header.</dd>
<dd><code>header</code> - the AMQP Header that was read.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SaslServerContext.html#sendMechanisms(org.apache.qpid.protonj2.types.Symbol%5B%5D)"><code>SaslServerContext.sendMechanisms(Symbol[])</code></a>,
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a></dd>
</dl>
</li>
</ul>
<a id="handleSaslInit(org.apache.qpid.protonj2.engine.sasl.SaslServerContext,org.apache.qpid.protonj2.types.Symbol,org.apache.qpid.protonj2.buffer.ProtonBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleSaslInit</h4>
<pre class="methodSignature">void&nbsp;handleSaslInit&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context,
<a href="../../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>&nbsp;mechanism,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;initResponse)</pre>
<div class="block">Called when a SASL init frame has arrived from the client indicating the chosen SASL mechanism
and the initial response data if any. Based on the chosen mechanism the server handler should provide
additional challenges or complete the SASL negotiation by sending an outcome to the client. The handler
can either respond immediately or it should response using the same thread that invoked this handler.
<p>
In the event that the server implementation cannot proceed with SASL authentication it should call the
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a> to fail
the SASL negotiation and signal the <a href="../Engine.html" title="interface in org.apache.qpid.protonj2.engine"><code>Engine</code></a> that it should transition to a failed state.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - the <a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslServerContext</code></a> object that is to process the SASL initial frame.</dd>
<dd><code>mechanism</code> - the SASL mechanism that the client side has chosen for negotiations.</dd>
<dd><code>initResponse</code> - the initial response sent by the remote.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SaslServerContext.html#sendChallenge(org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslServerContext.sendChallenge(ProtonBuffer)</code></a>,
<a href="SaslServerContext.html#sendOutcome(org.apache.qpid.protonj2.engine.sasl.SaslOutcome,org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslServerContext.sendOutcome(SaslOutcome, ProtonBuffer)</code></a>,
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a></dd>
</dl>
</li>
</ul>
<a id="handleSaslResponse(org.apache.qpid.protonj2.engine.sasl.SaslServerContext,org.apache.qpid.protonj2.buffer.ProtonBuffer)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>handleSaslResponse</h4>
<pre class="methodSignature">void&nbsp;handleSaslResponse&#8203;(<a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslServerContext</a>&nbsp;context,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;response)</pre>
<div class="block">Called when a SASL response frame has arrived from the client. The server should process the response
and either offer additional challenges or complete the SASL negotiations based on the mechanics of the
chosen SASL mechanism. The server handler should either respond immediately or should respond from the
same thread that the response handler was invoked from.
<p>
In the event that the server implementation cannot proceed with SASL authentication it should call the
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a> to fail
the SASL negotiation and signal the <a href="../Engine.html" title="interface in org.apache.qpid.protonj2.engine"><code>Engine</code></a> that it should transition to a failed state.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - the <a href="SaslServerContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslServerContext</code></a> object that is to process the incoming response.</dd>
<dd><code>response</code> - the response sent by the remote SASL "client".</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SaslServerContext.html#sendChallenge(org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslServerContext.sendChallenge(ProtonBuffer)</code></a>,
<a href="SaslServerContext.html#sendOutcome(org.apache.qpid.protonj2.engine.sasl.SaslOutcome,org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslServerContext.sendOutcome(SaslOutcome, ProtonBuffer)</code></a>,
<a href="SaslServerContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslServerContext.saslFailure(javax.security.sasl.SaslException)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SaslServerListener.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>