<!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>
