我正在编写自己的memcachedClient实现,我想在其中添加身份验证。我刚开始使用PLAIN auth,但失败了。简而言之,如果我继续执行并发出PLAIN AUTH命令,则LIST_MECH命令始终返回空结果,
mech: ``PLAIN'' with 34 bytes of data
SASL (severity 2): Couldn't find mech PLAIN
下面是我的配置:
% cat memcached.conf
mech_list: plain
log_level: 5
sasldb_path: /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将返回受支持的身份验证机制列表。
在座的任何人都可以向我指出可以使其工作的方向吗?
答案 0 :(得分:0)
我自己想到了这件事。 Cyrus-SASL未正确安装在我的工作区中。
通常,您可以通过3!
安装sasl,这对我有用。
有时候,您使用的程序包管理框架不允许您使用sudo yum install cyrus-sasl-devel
来安装依赖项,而是通过某些依赖项管理工具来安装。然后,您必须从那里弄清楚。就我而言,我必须将yum
指定为环境变量,并将其指向我的依赖项管理工具安装SASL共享库的位置。