blob: 9252dfe63138262149eaf1a729ba6f1ddf2407d3 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SaslClientListener (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="SaslClientListener (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/SaslClientListener.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 SaslClientListener" class="title">Interface SaslClientListener</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="client/SaslAuthenticator.html" title="class in org.apache.qpid.protonj2.engine.sasl.client">SaslAuthenticator</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">SaslClientListener</span></pre>
<div class="block">Listener for SASL frame arrival to facilitate relevant handling for the SASL
negotiation of the client 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="#handleSaslChallenge(org.apache.qpid.protonj2.engine.sasl.SaslClientContext,org.apache.qpid.protonj2.buffer.ProtonBuffer)">handleSaslChallenge</a></span>&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;challenge)</code></th>
<td class="colLast">
<div class="block">Called when a SASL challenge frame has arrived and its effect applied, indicating the
challenge sent by the 'server' peer.</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="#handleSaslMechanisms(org.apache.qpid.protonj2.engine.sasl.SaslClientContext,org.apache.qpid.protonj2.types.Symbol%5B%5D)">handleSaslMechanisms</a></span>&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context,
<a href="../../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]&nbsp;mechanisms)</code></th>
<td class="colLast">
<div class="block">Called when a SASL mechanisms frame has arrived and its effect applied, indicating
the offered mechanisms sent by the 'server' peer.</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="#handleSaslOutcome(org.apache.qpid.protonj2.engine.sasl.SaslClientContext,org.apache.qpid.protonj2.engine.sasl.SaslOutcome,org.apache.qpid.protonj2.buffer.ProtonBuffer)">handleSaslOutcome</a></span>&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context,
<a href="SaslOutcome.html" title="enum in org.apache.qpid.protonj2.engine.sasl">SaslOutcome</a>&nbsp;outcome,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;additional)</code></th>
<td class="colLast">
<div class="block">Called when a SASL outcome frame has arrived and its effect applied, indicating the outcome and
any success additional data sent by the 'server' peer.</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.SaslClientContext)">initialize</a></span>&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context)</code></th>
<td class="colLast">
<div class="block">Called to give the application code a clear point to initialize all the client 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.SaslClientContext)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;initialize&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context)</pre>
<div class="block">Called to give the application code a clear point to initialize all the client side expectations.
<p>
The application should use this event to configure the client mechanisms and other client
authentication properties.
<p>
In the event that the client implementation cannot proceed with SASL authentication it should call the
<a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.saslFailure(javax.security.sasl.SaslException)</code></a>
to 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="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslClientContext</code></a> used to authenticate the connection.</dd>
</dl>
</li>
</ul>
<a id="handleSaslMechanisms(org.apache.qpid.protonj2.engine.sasl.SaslClientContext,org.apache.qpid.protonj2.types.Symbol[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleSaslMechanisms</h4>
<pre class="methodSignature">void&nbsp;handleSaslMechanisms&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context,
<a href="../../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]&nbsp;mechanisms)</pre>
<div class="block">Called when a SASL mechanisms frame has arrived and its effect applied, indicating
the offered mechanisms sent by the 'server' peer. The client should respond to the
mechanisms event by selecting one from the offered list and calling the
<a href="SaslClientContext.html#sendChosenMechanism(org.apache.qpid.protonj2.types.Symbol,java.lang.String,org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslClientContext.sendChosenMechanism(Symbol, String, ProtonBuffer)</code></a> method immediately
or later using the same thread that triggered this event.
<p>
In the event that the client implementation cannot proceed with SASL authentication it should call the
<a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.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="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslClientContext</code></a> that is to handle the mechanism selection</dd>
<dd><code>mechanisms</code> - the mechanisms that the remote supports.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SaslClientContext.html#sendChosenMechanism(org.apache.qpid.protonj2.types.Symbol,java.lang.String,org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslClientContext.sendChosenMechanism(Symbol, String, ProtonBuffer)</code></a>,
<a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.saslFailure(javax.security.sasl.SaslException)</code></a></dd>
</dl>
</li>
</ul>
<a id="handleSaslChallenge(org.apache.qpid.protonj2.engine.sasl.SaslClientContext,org.apache.qpid.protonj2.buffer.ProtonBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleSaslChallenge</h4>
<pre class="methodSignature">void&nbsp;handleSaslChallenge&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;challenge)</pre>
<div class="block">Called when a SASL challenge frame has arrived and its effect applied, indicating the
challenge sent by the 'server' peer. The client should respond to the mechanisms event
by selecting one from the offered list and calling the
<a href="SaslClientContext.html#sendResponse(org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslClientContext.sendResponse(ProtonBuffer)</code></a> method immediately or later using the same
thread that triggered this event.
<p>
In the event that the client implementation cannot proceed with SASL authentication it should call the
<a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.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="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslClientContext</code></a> that is to handle the SASL challenge.</dd>
<dd><code>challenge</code> - the challenge bytes sent from the SASL server.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SaslClientContext.html#sendResponse(org.apache.qpid.protonj2.buffer.ProtonBuffer)"><code>SaslClientContext.sendResponse(ProtonBuffer)</code></a>,
<a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.saslFailure(javax.security.sasl.SaslException)</code></a></dd>
</dl>
</li>
</ul>
<a id="handleSaslOutcome(org.apache.qpid.protonj2.engine.sasl.SaslClientContext,org.apache.qpid.protonj2.engine.sasl.SaslOutcome,org.apache.qpid.protonj2.buffer.ProtonBuffer)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>handleSaslOutcome</h4>
<pre class="methodSignature">void&nbsp;handleSaslOutcome&#8203;(<a href="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl">SaslClientContext</a>&nbsp;context,
<a href="SaslOutcome.html" title="enum in org.apache.qpid.protonj2.engine.sasl">SaslOutcome</a>&nbsp;outcome,
<a href="../../buffer/ProtonBuffer.html" title="interface in org.apache.qpid.protonj2.buffer">ProtonBuffer</a>&nbsp;additional)</pre>
<div class="block">Called when a SASL outcome frame has arrived and its effect applied, indicating the outcome and
any success additional data sent by the 'server' peer. The client can consider the SASL negotiations
complete following this event. The client should respond appropriately to the outcome whose state can
indicate that negotiations have failed and the server has not authenticated the client.
<p>
In the event that the client implementation cannot proceed with SASL authentication it should call the
<a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.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="SaslClientContext.html" title="interface in org.apache.qpid.protonj2.engine.sasl"><code>SaslClientContext</code></a> that is to handle the resulting SASL outcome.</dd>
<dd><code>outcome</code> - the outcome that was supplied by the SASL "server".</dd>
<dd><code>additional</code> - the additional data sent from the server, or null if none.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SaslClientContext.html#saslFailure(javax.security.sasl.SaslException)"><code>SaslClientContext.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/SaslClientListener.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>