4 <html class=
"writer-html5" lang=
"en" >
8 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0">
10 <title>SASL support
— libmemcached
1.0.99 documentation
</title>
14 <link rel=
"stylesheet" href=
"../_static/css/theme.css" type=
"text/css" />
15 <link rel=
"stylesheet" href=
"../_static/pygments.css" type=
"text/css" />
24 <script src="../_static/js/html5shiv.min.js"></script>
28 <script type=
"text/javascript" id=
"documentation_options" data-url_root=
"../" src=
"../_static/documentation_options.js"></script>
29 <script src=
"../_static/jquery.js"></script>
30 <script src=
"../_static/underscore.js"></script>
31 <script src=
"../_static/doctools.js"></script>
32 <script src=
"../_static/language_data.js"></script>
34 <script type=
"text/javascript" src=
"../_static/js/theme.js"></script>
37 <link rel=
"index" title=
"Index" href=
"../genindex.html" />
38 <link rel=
"search" title=
"Search" href=
"../search.html" />
39 <link rel=
"copyright" title=
"Copyright" href=
"../copyright.html" />
40 <link rel=
"next" title=
"Servers and Server Lists" href=
"index_advanced_servers.html" />
41 <link rel=
"prev" title=
"Generating hash values directly" href=
"memcached_generate_hash_value.html" />
44 <body class=
"wy-body-for-nav">
47 <div class=
"wy-grid-for-nav">
49 <nav data-toggle=
"wy-nav-shift" class=
"wy-nav-side">
50 <div class=
"wy-side-scroll">
51 <div class=
"wy-side-nav-search" >
55 <a href=
"../index.html" class=
"icon icon-home" alt=
"Documentation Home"> libmemcached
72 <form id=
"rtd-search-form" class=
"wy-form" action=
"../search.html" method=
"get">
73 <input type=
"text" name=
"q" placeholder=
"Search docs" />
74 <input type=
"hidden" name=
"check_keywords" value=
"yes" />
75 <input type=
"hidden" name=
"area" value=
"default" />
83 <div class=
"wy-menu wy-menu-vertical" data-spy=
"affix" role=
"navigation" aria-label=
"main navigation">
90 <p class=
"caption"><span class=
"caption-text">libmemcached
</span></p>
92 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libmemcached.html">Introduction
</a></li>
93 <li class=
"toctree-l1 current"><a class=
"reference internal" href=
"index.html">libmemcached API
</a><ul class=
"current">
94 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_basics.html">Basics
</a></li>
95 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_data.html">Working with Data
</a></li>
96 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_errors.html">Messages and Errors
</a></li>
97 <li class=
"toctree-l2 current"><a class=
"reference internal" href=
"index_advanced.html">Advanced Topics
</a><ul class=
"current">
98 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_internals.html">Internal Behavior
</a></li>
99 <li class=
"toctree-l3 current"><a class=
"reference internal" href=
"index_advanced_aeh.html">Authentication, Encryption
& Hashing
</a><ul class=
"current">
100 <li class=
"toctree-l4"><a class=
"reference internal" href=
"memcached_set_encoding_key.html">Set encryption key
</a></li>
101 <li class=
"toctree-l4"><a class=
"reference internal" href=
"memcached_generate_hash_value.html">Generating hash values directly
</a></li>
102 <li class=
"toctree-l4 current"><a class=
"current reference internal" href=
"#">SASL support
</a></li>
105 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_servers.html">Servers and Server Lists
</a></li>
106 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_daemon.html">Affecting the memcached Daemon
</a></li>
107 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_stats.html">Statistics
</a></li>
110 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_deprecated.html">Deprecated Functionality
</a></li>
113 <li class=
"toctree-l1"><a class=
"reference internal" href=
"index_misc.html">Misc
</a></li>
115 <p class=
"caption"><span class=
"caption-text">libmemcachedutil
</span></p>
117 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libmemcachedutil.html">Introduction
</a></li>
118 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libmemcachedutil/index.html">libmemcachedutil API
</a></li>
120 <p class=
"caption"><span class=
"caption-text">libhashkit
</span></p>
122 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libhashkit.html">Introduction
</a></li>
123 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libhashkit/index.html">libhashkit API
</a></li>
125 <p class=
"caption"><span class=
"caption-text">Client Applications
</span></p>
127 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../bin/index.html">Client Applications
</a></li>
129 <p class=
"caption"><span class=
"caption-text">Copyright
</span></p>
131 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../copyright.html">Copyright
</a></li>
141 <section data-toggle=
"wy-nav-shift" class=
"wy-nav-content-wrap">
144 <nav class=
"wy-nav-top" aria-label=
"top navigation">
146 <i data-toggle=
"wy-nav-top" class=
"fa fa-bars"></i>
147 <a href=
"../index.html">libmemcached
</a>
152 <div class=
"wy-nav-content">
154 <div class=
"rst-content">
172 <div role=
"navigation" aria-label=
"breadcrumbs navigation">
174 <ul class=
"wy-breadcrumbs">
176 <li><a href=
"../index.html" class=
"icon icon-home"></a> »</li>
178 <li><a href=
"index.html">libmemcached API
</a> »</li>
180 <li><a href=
"index_advanced.html">Advanced Topics
</a> »</li>
182 <li><a href=
"index_advanced_aeh.html">Authentication, Encryption
& Hashing
</a> »</li>
184 <li>SASL support
</li>
187 <li class=
"wy-breadcrumbs-aside">
198 <div role=
"main" class=
"document" itemscope=
"itemscope" itemtype=
"http://schema.org/Article">
199 <div itemprop=
"articleBody">
201 <div class=
"section" id=
"sasl-support">
202 <h1>SASL support
<a class=
"headerlink" href=
"#sasl-support" title=
"Permalink to this headline">¶
</a></h1>
203 <div class=
"section" id=
"synopsis">
204 <h2>SYNOPSIS
<a class=
"headerlink" href=
"#synopsis" title=
"Permalink to this headline">¶
</a></h2>
206 <dt>#include
<libmemcached/memcached.h
></dt><dd><p>Compile and link with -lmemcached
</p>
209 <dl class=
"cpp function">
210 <dt id=
"_CPPv428memcached_set_sasl_callbacksP12memcached_stPK15sasl_callback_t">
211 <span id=
"_CPPv328memcached_set_sasl_callbacksP12memcached_stPK15sasl_callback_t"></span><span id=
"_CPPv228memcached_set_sasl_callbacksP12memcached_stPK15sasl_callback_t"></span><span id=
"memcached_set_sasl_callbacks__memcached_stP.sasl_callback_tCP"></span>void
<code class=
"sig-name descname">memcached_set_sasl_callbacks
</code><span class=
"sig-paren">(
</span><a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st">memcached_st
</a> *
<em>ptr
</em>,
<em class=
"property">const
</em> sasl_callback_t *
<em>callbacks
</em><span class=
"sig-paren">)
</span><a class=
"headerlink" href=
"#_CPPv428memcached_set_sasl_callbacksP12memcached_stPK15sasl_callback_t" title=
"Permalink to this definition">¶
</a><br /></dt>
212 <dd><dl class=
"field-list simple">
213 <dt class=
"field-odd">Parameters
</dt>
214 <dd class=
"field-odd"><ul class=
"simple">
215 <li><p><strong>ptr
</strong> -- pointer to initialized
<a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_st
</span></code></a> struct
</p></li>
216 <li><p><strong>callbacks
</strong> -- pointer to
<code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">sasl_callbacks_t
</span></code> holding the callbacks to use
</p></li>
222 <dl class=
"cpp function">
223 <dt id=
"_CPPv428memcached_get_sasl_callbacksP12memcached_st">
224 <span id=
"_CPPv328memcached_get_sasl_callbacksP12memcached_st"></span><span id=
"_CPPv228memcached_get_sasl_callbacksP12memcached_st"></span><span id=
"memcached_get_sasl_callbacks__memcached_stP"></span><em class=
"property">const
</em> sasl_callback_t *
<code class=
"sig-name descname">memcached_get_sasl_callbacks
</code><span class=
"sig-paren">(
</span><a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st">memcached_st
</a> *
<em>ptr
</em><span class=
"sig-paren">)
</span><a class=
"headerlink" href=
"#_CPPv428memcached_get_sasl_callbacksP12memcached_st" title=
"Permalink to this definition">¶
</a><br /></dt>
225 <dd><dl class=
"field-list simple">
226 <dt class=
"field-odd">Parameters
</dt>
227 <dd class=
"field-odd"><p><strong>ptr
</strong> -- pointer to initialized
<a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_st
</span></code></a> struct
</p>
229 <dt class=
"field-even">Returns
</dt>
230 <dd class=
"field-even"><p>pointer to
<code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">sasl_callbacks_t
</span></code> holding the callbacks currently used
</p>
235 <dl class=
"cpp function">
236 <dt id=
"_CPPv428memcached_set_sasl_auth_dataP12memcached_stPKcPKc">
237 <span id=
"_CPPv328memcached_set_sasl_auth_dataP12memcached_stPKcPKc"></span><span id=
"_CPPv228memcached_set_sasl_auth_dataP12memcached_stPKcPKc"></span><span id=
"memcached_set_sasl_auth_data__memcached_stP.cCP.cCP"></span><a class=
"reference internal" href=
"memcached_return_t.html#_CPPv418memcached_return_t" title=
"memcached_return_t">memcached_return_t
</a> <code class=
"sig-name descname">memcached_set_sasl_auth_data
</code><span class=
"sig-paren">(
</span><a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st">memcached_st
</a> *
<em>ptr
</em>,
<em class=
"property">const
</em> char *
<em>username
</em>,
<em class=
"property">const
</em> char *
<em>password
</em><span class=
"sig-paren">)
</span><a class=
"headerlink" href=
"#_CPPv428memcached_set_sasl_auth_dataP12memcached_stPKcPKc" title=
"Permalink to this definition">¶
</a><br /></dt>
238 <dd><dl class=
"field-list simple">
239 <dt class=
"field-odd">Parameters
</dt>
240 <dd class=
"field-odd"><ul class=
"simple">
241 <li><p><strong>ptr
</strong> -- pointer to initialized
<a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_st
</span></code></a> struct
</p></li>
242 <li><p><strong>username
</strong> --
</p></li>
243 <li><p><strong>password
</strong> --
</p></li>
246 <dt class=
"field-even">Returns
</dt>
247 <dd class=
"field-even"><p><a class=
"reference internal" href=
"memcached_return_t.html#_CPPv418memcached_return_t" title=
"memcached_return_t"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_return_t
</span></code></a> indicating success
</p>
252 <dl class=
"cpp function">
253 <dt id=
"_CPPv432memcached_destroy_sasl_auth_dataP12memcached_st">
254 <span id=
"_CPPv332memcached_destroy_sasl_auth_dataP12memcached_st"></span><span id=
"_CPPv232memcached_destroy_sasl_auth_dataP12memcached_st"></span><span id=
"memcached_destroy_sasl_auth_data__memcached_stP"></span><a class=
"reference internal" href=
"memcached_return_t.html#_CPPv418memcached_return_t" title=
"memcached_return_t">memcached_return_t
</a> <code class=
"sig-name descname">memcached_destroy_sasl_auth_data
</code><span class=
"sig-paren">(
</span><a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st">memcached_st
</a> *
<em>ptr
</em><span class=
"sig-paren">)
</span><a class=
"headerlink" href=
"#_CPPv432memcached_destroy_sasl_auth_dataP12memcached_st" title=
"Permalink to this definition">¶
</a><br /></dt>
255 <dd><dl class=
"field-list simple">
256 <dt class=
"field-odd">Parameters
</dt>
257 <dd class=
"field-odd"><p><strong>ptr
</strong> -- pointer to initialized
<a class=
"reference internal" href=
"memcached_create.html#_CPPv412memcached_st" title=
"memcached_st"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_st
</span></code></a> struct
</p>
259 <dt class=
"field-even">Returns
</dt>
260 <dd class=
"field-even"><p><a class=
"reference internal" href=
"memcached_return_t.html#_CPPv418memcached_return_t" title=
"memcached_return_t"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_return_t
</span></code></a> indicating success
</p>
266 <div class=
"section" id=
"description">
267 <h2>DESCRIPTION
<a class=
"headerlink" href=
"#description" title=
"Permalink to this headline">¶
</a></h2>
268 <p><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">libmemcached
</span></code> allows you to plug in your own callbacks function used by
269 libsasl to perform SASL authentication.
</p>
270 <p>Please note that SASL requires the memcached binary protocol, and you have
271 to specify the callbacks before you connect to the server.
</p>
272 <p><a class=
"reference internal" href=
"#_CPPv428memcached_set_sasl_auth_dataP12memcached_stPKcPKc" title=
"memcached_set_sasl_auth_data"><code class=
"xref cpp cpp-func docutils literal notranslate"><span class=
"pre">memcached_set_sasl_auth_data()
</span></code></a> is a helper function defining
273 the basic functionality for you, but it will store the username and password
274 in memory. If you choose to use this method you have to call
275 <a class=
"reference internal" href=
"#_CPPv432memcached_destroy_sasl_auth_dataP12memcached_st" title=
"memcached_destroy_sasl_auth_data"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_destroy_sasl_auth_data()
</span></code></a> before calling
<a class=
"reference internal" href=
"memcached_create.html#_CPPv414memcached_freeP12memcached_st" title=
"memcached_free"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_free()
</span></code></a> to avoid a
276 memory leak. You should NOT call
<a class=
"reference internal" href=
"#_CPPv432memcached_destroy_sasl_auth_dataP12memcached_st" title=
"memcached_destroy_sasl_auth_data"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_destroy_sasl_auth_data()
</span></code></a> if you
277 specify your own callback function with
<a class=
"reference internal" href=
"#_CPPv428memcached_set_sasl_callbacksP12memcached_stPK15sasl_callback_t" title=
"memcached_set_sasl_callbacks"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">memcached_set_sasl_callbacks()
</span></code></a>.
</p>
279 <div class=
"section" id=
"return-value">
280 <h2>RETURN VALUE
<a class=
"headerlink" href=
"#return-value" title=
"Permalink to this headline">¶
</a></h2>
281 <p><a class=
"reference internal" href=
"#_CPPv428memcached_get_sasl_callbacksP12memcached_st" title=
"memcached_get_sasl_callbacks"><code class=
"xref cpp cpp-func docutils literal notranslate"><span class=
"pre">memcached_get_sasl_callbacks()
</span></code></a> returns the callbacks currently used by
282 this memcached handle.
<a class=
"reference internal" href=
"#_CPPv428memcached_set_sasl_auth_dataP12memcached_stPKcPKc" title=
"memcached_set_sasl_auth_data"><code class=
"xref cpp cpp-func docutils literal notranslate"><span class=
"pre">memcached_set_sasl_auth_data()
</span></code></a> returns
283 <a class=
"reference internal" href=
"memcached_return_t.html#_CPPv4N18memcached_return_t17MEMCACHED_SUCCESSE" title=
"MEMCACHED_SUCCESS"><code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">MEMCACHED_SUCCESS
</span></code></a> upon success.
</p>
285 <div class=
"section" id=
"see-also">
286 <h2>SEE ALSO
<a class=
"headerlink" href=
"#see-also" title=
"Permalink to this headline">¶
</a></h2>
288 <li><p><em class=
"manpage"><a class=
"manpage reference external" href=
"https://linux.die.net/man/1/memcached">memcached(
1)
</a></em></p></li>
289 <li><p><a class=
"reference internal" href=
"../libmemcached.html"><span class=
"doc">C/C++ Client Library for memcached
</span></a></p></li>
290 <li><p><a class=
"reference internal" href=
"memcached_strerror.html"><span class=
"doc">Converting Error Codes to Messages
</span></a></p></li>
291 <li><p><em class=
"manpage"><a class=
"manpage reference external" href=
"https://linux.die.net/man/3/sasl_client_new">sasl_client_new(
3)
</a></em></p></li>
292 <li><p><em class=
"manpage"><a class=
"manpage reference external" href=
"https://linux.die.net/man/3/sasl_callbacks">sasl_callbacks(
3)
</a></em></p></li>
303 <div class=
"rst-footer-buttons" role=
"navigation" aria-label=
"footer navigation">
305 <a href=
"index_advanced_servers.html" class=
"btn btn-neutral float-right" title=
"Servers and Server Lists" accesskey=
"n" rel=
"next">Next
<span class=
"fa fa-arrow-circle-right"></span></a>
308 <a href=
"memcached_generate_hash_value.html" class=
"btn btn-neutral float-left" title=
"Generating hash values directly" accesskey=
"p" rel=
"prev"><span class=
"fa fa-arrow-circle-left"></span> Previous
</a>
315 <div role=
"contentinfo">
319 © <a href=
"../copyright.html">Copyright
</a>
326 Built with
<a href=
"http://sphinx-doc.org/">Sphinx
</a> using a
328 <a href=
"https://github.com/rtfd/sphinx_rtd_theme">theme
</a>
330 provided by
<a href=
"https://readthedocs.org">Read the Docs
</a>.
342 <script type=
"text/javascript">
344 SphinxRtdTheme.Navigation.enable(true);