4 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
9 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0">
11 <title>SASL support
— libmemcached
1.1.0 documentation
</title>
20 <script type=
"text/javascript" src=
"../_static/js/modernizr.min.js"></script>
23 <script type=
"text/javascript" id=
"documentation_options" data-url_root=
"../" src=
"../_static/documentation_options.js"></script>
24 <script type=
"text/javascript" src=
"../_static/jquery.js"></script>
25 <script type=
"text/javascript" src=
"../_static/underscore.js"></script>
26 <script type=
"text/javascript" src=
"../_static/doctools.js"></script>
27 <script type=
"text/javascript" src=
"../_static/language_data.js"></script>
29 <script type=
"text/javascript" src=
"../_static/js/theme.js"></script>
34 <link rel=
"stylesheet" href=
"../_static/css/theme.css" type=
"text/css" />
35 <link rel=
"stylesheet" href=
"../_static/pygments.css" type=
"text/css" />
36 <link rel=
"index" title=
"Index" href=
"../genindex.html" />
37 <link rel=
"search" title=
"Search" href=
"../search.html" />
38 <link rel=
"copyright" title=
"Copyright" href=
"../copyright.html" />
39 <link rel=
"next" title=
"Servers and Server Lists" href=
"index_advanced_servers.html" />
40 <link rel=
"prev" title=
"Generating hash values directly" href=
"memcached_generate_hash_value.html" />
43 <body class=
"wy-body-for-nav">
46 <div class=
"wy-grid-for-nav">
48 <nav data-toggle=
"wy-nav-shift" class=
"wy-nav-side">
49 <div class=
"wy-side-scroll">
50 <div class=
"wy-side-nav-search" >
54 <a href=
"../index.html" class=
"icon icon-home"> libmemcached
71 <form id=
"rtd-search-form" class=
"wy-form" action=
"../search.html" method=
"get">
72 <input type=
"text" name=
"q" placeholder=
"Search docs" />
73 <input type=
"hidden" name=
"check_keywords" value=
"yes" />
74 <input type=
"hidden" name=
"area" value=
"default" />
81 <div class=
"wy-menu wy-menu-vertical" data-spy=
"affix" role=
"navigation" aria-label=
"main navigation">
89 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libmemcached.html">Introduction
</a></li>
90 <li class=
"toctree-l1 current"><a class=
"reference internal" href=
"index.html">libmemcached API
</a><ul class=
"current">
91 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_basics.html">Basics
</a></li>
92 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_data.html">Working with Data
</a></li>
93 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_errors.html">Messages and Errors
</a></li>
94 <li class=
"toctree-l2 current"><a class=
"reference internal" href=
"index_advanced.html">Advanced Topics
</a><ul class=
"current">
95 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_internals.html">Internal Behavior
</a></li>
96 <li class=
"toctree-l3 current"><a class=
"reference internal" href=
"index_advanced_aeh.html">Authentication, Encryption
& Hashing
</a><ul class=
"current">
97 <li class=
"toctree-l4"><a class=
"reference internal" href=
"memcached_set_encoding_key.html">Set encryption key
</a></li>
98 <li class=
"toctree-l4"><a class=
"reference internal" href=
"memcached_generate_hash_value.html">Generating hash values directly
</a></li>
99 <li class=
"toctree-l4 current"><a class=
"current reference internal" href=
"#">SASL support
</a></li>
102 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_servers.html">Servers and Server Lists
</a></li>
103 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_daemon.html">Affecting the memcached Daemon
</a></li>
104 <li class=
"toctree-l3"><a class=
"reference internal" href=
"index_advanced_stats.html">Statistics
</a></li>
107 <li class=
"toctree-l2"><a class=
"reference internal" href=
"index_deprecated.html">Deprecated Functionality
</a></li>
110 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libmemcachedutil/index.html">libmemcachedutil API
</a></li>
111 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../libhashkit/index.html">libhashkit API
</a></li>
112 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../bin/index.html">Client Applications
</a></li>
113 <li class=
"toctree-l1"><a class=
"reference internal" href=
"index_misc.html">Miscellaneous
</a></li>
116 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../changelogs.html">Change Logs
</a></li>
117 <li class=
"toctree-l1"><a class=
"reference internal" href=
"../copyright.html">Copyright
</a></li>
126 <section data-toggle=
"wy-nav-shift" class=
"wy-nav-content-wrap">
129 <nav class=
"wy-nav-top" aria-label=
"top navigation">
131 <i data-toggle=
"wy-nav-top" class=
"fa fa-bars"></i>
132 <a href=
"../index.html">libmemcached
</a>
137 <div class=
"wy-nav-content">
139 <div class=
"rst-content">
157 <div role=
"navigation" aria-label=
"breadcrumbs navigation">
159 <ul class=
"wy-breadcrumbs">
161 <li><a href=
"../index.html">Docs
</a> »</li>
163 <li><a href=
"index.html">libmemcached API
</a> »</li>
165 <li><a href=
"index_advanced.html">Advanced Topics
</a> »</li>
167 <li><a href=
"index_advanced_aeh.html">Authentication, Encryption
& Hashing
</a> »</li>
169 <li>SASL support
</li>
172 <li class=
"wy-breadcrumbs-aside">
176 <a href=
"https://github.com/m6w6/libmemcached/blob/v1.x/docs/source/libmemcached/memcached_sasl.rst" class=
"fa fa-github"> Edit on GitHub
</a>
187 <div role=
"main" class=
"document" itemscope=
"itemscope" itemtype=
"http://schema.org/Article">
188 <div itemprop=
"articleBody">
190 <div class=
"section" id=
"sasl-support">
191 <h1>SASL support
<a class=
"headerlink" href=
"#sasl-support" title=
"Permalink to this headline">¶
</a></h1>
192 <div class=
"section" id=
"synopsis">
193 <h2>SYNOPSIS
<a class=
"headerlink" href=
"#synopsis" title=
"Permalink to this headline">¶
</a></h2>
194 <dl class=
"docutils">
195 <dt>#include
<libmemcached/memcached.h
></dt>
196 <dd>Compile and link with -lmemcached
</dd>
198 <dl class=
"function">
199 <dt id=
"_CPPv428memcached_set_sasl_callbacksP12memcached_stPK15sasl_callback_t">
200 <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=
"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>
201 <dd><table class=
"docutils field-list" frame=
"void" rules=
"none">
202 <col class=
"field-name" />
203 <col class=
"field-body" />
205 <tr class=
"field-odd field"><th class=
"field-name">Parameters:
</th><td class=
"field-body"><ul class=
"first last simple">
206 <li><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
</li>
207 <li><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
</li>
215 <dl class=
"function">
216 <dt id=
"_CPPv428memcached_get_sasl_callbacksP12memcached_st">
217 <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=
"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>
218 <dd><table class=
"docutils field-list" frame=
"void" rules=
"none">
219 <col class=
"field-name" />
220 <col class=
"field-body" />
222 <tr class=
"field-odd field"><th class=
"field-name">Parameters:
</th><td class=
"field-body"><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
</td>
224 <tr class=
"field-even field"><th class=
"field-name">Returns:
</th><td class=
"field-body">pointer to
<code class=
"xref cpp cpp-any docutils literal notranslate"><span class=
"pre">sasl_callbacks_t
</span></code> holding the callbacks currently used
</td>
230 <dl class=
"function">
231 <dt id=
"_CPPv428memcached_set_sasl_auth_dataP12memcached_stPKcPKc">
232 <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=
"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>
233 <dd><table class=
"docutils field-list" frame=
"void" rules=
"none">
234 <col class=
"field-name" />
235 <col class=
"field-body" />
237 <tr class=
"field-odd field"><th class=
"field-name">Parameters:
</th><td class=
"field-body"><ul class=
"first simple">
238 <li><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
</li>
239 <li><strong>username
</strong> --
</li>
240 <li><strong>password
</strong> --
</li>
244 <tr class=
"field-even field"><th class=
"field-name">Returns:
</th><td class=
"field-body"><p class=
"first last"><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>
251 <dl class=
"function">
252 <dt id=
"_CPPv432memcached_destroy_sasl_auth_dataP12memcached_st">
253 <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=
"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>
254 <dd><table class=
"docutils field-list" frame=
"void" rules=
"none">
255 <col class=
"field-name" />
256 <col class=
"field-body" />
258 <tr class=
"field-odd field"><th class=
"field-name">Parameters:
</th><td class=
"field-body"><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
</td>
260 <tr class=
"field-even field"><th class=
"field-name">Returns:
</th><td class=
"field-body"><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
</td>
267 <div class=
"section" id=
"description">
268 <h2>DESCRIPTION
<a class=
"headerlink" href=
"#description" title=
"Permalink to this headline">¶
</a></h2>
269 <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
270 libsasl to perform SASL authentication.
</p>
271 <p>Please note that SASL requires the memcached binary protocol, and you have
272 to specify the callbacks before you connect to the server.
</p>
273 <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
274 the basic functionality for you, but it will store the username and password
275 in memory. If you choose to use this method you have to call
276 <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
277 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
278 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>
280 <div class=
"section" id=
"return-value">
281 <h2>RETURN VALUE
<a class=
"headerlink" href=
"#return-value" title=
"Permalink to this headline">¶
</a></h2>
282 <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
283 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
284 <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>
286 <div class=
"section" id=
"see-also">
287 <h2>SEE ALSO
<a class=
"headerlink" href=
"#see-also" title=
"Permalink to this headline">¶
</a></h2>
289 <li><em class=
"manpage"><a class=
"manpage reference external" href=
"https://linux.die.net/man/1/memcached">memcached(
1)
</a></em></li>
290 <li><a class=
"reference internal" href=
"../libmemcached.html"><span class=
"doc">C/C++ Client Library for memcached
</span></a></li>
291 <li><a class=
"reference internal" href=
"memcached_strerror.html"><span class=
"doc">Converting Error Codes to Messages
</span></a></li>
292 <li><em class=
"manpage"><a class=
"manpage reference external" href=
"https://linux.die.net/man/3/sasl_client_new">sasl_client_new(
3)
</a></em></li>
293 <li><em class=
"manpage"><a class=
"manpage reference external" href=
"https://linux.die.net/man/3/sasl_callbacks">sasl_callbacks(
3)
</a></em></li>
304 <div class=
"rst-footer-buttons" role=
"navigation" aria-label=
"footer navigation">
306 <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>
309 <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>
316 <div role=
"contentinfo">
318 © <a href=
"../copyright.html">Copyright
</a>
322 Built with
<a href=
"http://sphinx-doc.org/">Sphinx
</a> using a
<a href=
"https://github.com/rtfd/sphinx_rtd_theme">theme
</a> provided by
<a href=
"https://readthedocs.org">Read the Docs
</a>.
335 <script type=
"text/javascript">
337 SphinxRtdTheme.Navigation.enable(true);