已启用SASL的Memcached LIST_MECH返回支持的空机制

时间:2019-04-24 18:45:21

标签: configuration memcached sasl

我正在编写自己的memcachedClient实现,我想在其中添加身份验证。我刚开始使用PLAIN auth,但失败了。简而言之,如果我继续执行并发出PLAIN AUTH命令,则LIST_MECH命令始终返回空结果,

mech:  ``PLAIN'' with 34 bytes of data
SASL (severity 2): Couldn't find mech PLAIN

下面是我的配置:

  • 我正在使用内存缓存1.5.12
  • 我的memcached.conf
% cat memcached.conf
mech_list: plain
log_level: 5
sasldb_path: /tmp/memcached-sasl-db
  • 我的/ tmp / memcached-sasl-db
% cat memcached-sasl-db
myname:mypass
  • 我的出口商品:
export MEMCACHED_SASL_PWDB=/tmp/memcached-sasl-db
export SASL_CONF_PATH=`pwd`/memcached.conf

启动时:

./memcached -m 32 -S -B binary -vvvv
Reading configuration from: </MemcachedBuildDirection/build/bin/>
Initialized SASL.

LIST_MECH显示:

<29 Read binary protocol data:
<29    0x80 0x20 0x00 0x00
<29    0x00 0x00 0x00 0x00
<29    0x00 0x00 0x00 0x00
<29    0x00 0x00 0x00 0x01
<29    0x00 0x00 0x00 0x00
<29    0x00 0x00 0x00 0x00
authenticated() in cmd 0x20 is true
>29 Writing bin response:
>29   0x81 0x20 0x00 0x00
>29   0x00 0x00 0x00 0x00
>29   0x00 0x00 0x00 0x00
>29   0x00 0x00 0x00 0x01
>29   0x00 0x00 0x00 0x00
>29   0x00 0x00 0x00 0x00

它表明响应的总长度为零。因此,我正在从输出中读取一个空列表。

还有AUTH命令:

<29 Read binary protocol data:
<29    0x80 0x21 0x00 0x05
<29    0x00 0x00 0x00 0x00
<29    0x00 0x00 0x00 0x27
<29    0x00 0x00 0x00 0x01
<29    0x00 0x00 0x00 0x00
<29    0x00 0x00 0x00 0x00
authenticated() in cmd 0x21 is true
29: going from conn_parse_cmd to conn_nread
mech:  ``PLAIN'' with 34 bytes of data
SASL (severity 2): Couldn't find mech PLAIN
sasl result code:  -4
Unknown sasl response:  -4
>29 Writing an error: Auth failure.
>29 Writing bin response:
>29   0x81 0x21 0x00 0x00
>29   0x00 0x00 0x00 0x20
>29   0x00 0x00 0x00 0x0d
>29   0x00 0x00 0x00 0x01
>29   0x00 0x00 0x00 0x00
>29   0x00 0x00 0x00 0x00

我希望LIST_MECH将返回受支持的身份验证机制列表。

在座的任何人都可以向我指出可以使其工作的方向吗?

1 个答案:

答案 0 :(得分:0)

我自己想到了这件事。 Cyrus-SASL未正确安装在我的工作区中。

通常,您可以通过3!安装sasl,这对我有用。

有时候,您使用的程序包管理框架不允许您使用sudo yum install cyrus-sasl-devel来安装依赖项,而是通过某些依赖项管理工具来安装。然后,您必须从那里弄清楚。就我而言,我必须将yum指定为环境变量,并将其指向我的依赖项管理工具安装SASL共享库的位置。