Bug 804616

Summary: CRAM-MD5 authentication method not supported
Product: Red Hat Enterprise MRG Reporter: Leonid Zhaldybin <lzhaldyb>
Component: python-qpidAssignee: messaging-bugs <messaging-bugs>
Status: CLOSED UPSTREAM QA Contact: Messaging QE <messaging-qe-bugs>
Severity: high Docs Contact:
Priority: medium    
Version: 2.1.2CC: jross, mgoulish, mtessun, pematous, pmoravec
Target Milestone: 3.3Keywords: TestCaseProvided
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-02-10 03:19:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1099891    
Bug Blocks:    
Attachments:
Description Flags
Broker's log file.
none
Python client CRAM-MD5 issue reproducer none

Description Leonid Zhaldybin 2012-03-19 12:47:50 UTC
Created attachment 571109 [details]
Broker's log file.

Description of problem:
According to the documentation (MIG and MUG), broker should support CRAM-MD5 authentication method. I was unable to connect to the broker using qpid-stat:

[root@lzhaldyb-rhel62i ~]# cat /etc/sasl2/qpidd.conf
...
mech_list: CRAM-MD5 DIGEST-MD5
...
[root@lzhaldyb-rhel62i ~]# sasldblistusers2 -f /var/lib/qpidd/qpidd.sasldb
john@QPID: userPassword
user@QPID: userPassword
[root@lzhaldyb-rhel62i ~]# qpid-stat -q --sasl-mechanism=DIGEST-MD5 john/secret@localhost:5672
Queues
  queue                                dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
  ====================================================================================================================
  qmfc-v2-hb-lzhaldyb-rhel62i.30399.1       Y        Y        0     0      0       0      0        0         1     2
  qmfc-v2-lzhaldyb-rhel62i.30399.1          Y        Y        0    11     11       0   8.16k    8.16k        1     2
  qmfc-v2-ui-lzhaldyb-rhel62i.30399.1       Y        Y        0     0      0       0      0        0         1     1
  reply-lzhaldyb-rhel62i.30399.1            Y        Y        0    71     71       0   32.6k    32.6k        1     2
  topic-lzhaldyb-rhel62i.30399.1            Y        Y        0     0      0       0      0        0         1     4
[root@lzhaldyb-rhel62i ~]# echo $?
0
[root@lzhaldyb-rhel62i ~]# qpid-stat -q --sasl-mechanism=CRAM-MD5 john/secret@localhost:5672
Failed: ConnectionFailed - (None, 'connection-forced: Authentication failed')
[root@lzhaldyb-rhel62i ~]# echo $?
1
[root@lzhaldyb-rhel62i ~]# qpid-stat -q --sasl-mechanism=DIGEST-MD5 user/password@localhost:5672
Queues
  queue                                dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
  ====================================================================================================================
  qmfc-v2-lzhaldyb-rhel62i.30423.1          Y        Y        0    11     11       0   8.16k    8.16k        1     2
  qmfc-v2-ui-lzhaldyb-rhel62i.30423.1       Y        Y        0     0      0       0      0        0         1     1
  qmfc-v2-hb-lzhaldyb-rhel62i.30423.1       Y        Y        0     0      0       0      0        0         1     2
  topic-lzhaldyb-rhel62i.30423.1            Y        Y        0     0      0       0      0        0         1     4
  reply-lzhaldyb-rhel62i.30423.1            Y        Y        0    71     71       0   32.6k    32.6k        1     2
[root@lzhaldyb-rhel62i ~]# echo $?
0
[root@lzhaldyb-rhel62i ~]# qpid-stat -q --sasl-mechanism=CRAM-MD5 user/password@localhost:5672
Failed: ConnectionFailed - (None, 'connection-forced: Authentication failed')
[root@lzhaldyb-rhel62i ~]# echo $?
1


Version-Release number of selected component (if applicable):
RHEL5:
python-qpid-0.14-3.el5
python-qpid-qmf-0.14-3.el5
qpid-cpp-client-0.14-10.el5
qpid-cpp-client-devel-0.14-10.el5
qpid-cpp-client-devel-docs-0.14-10.el5
qpid-cpp-client-ssl-0.14-10.el5
qpid-cpp-server-0.14-10.el5
qpid-cpp-server-cluster-0.14-10.el5
qpid-cpp-server-devel-0.14-10.el5
qpid-cpp-server-ssl-0.14-10.el5
qpid-cpp-server-store-0.14-10.el5
qpid-cpp-server-xml-0.14-10.el5
qpid-java-client-0.14-3.el5
qpid-java-common-0.14-3.el5
qpid-java-example-0.14-3.el5
qpid-qmf-0.14-3.el5
qpid-qmf-devel-0.14-3.el5
qpid-tools-0.14-1.el5
RHEL6:
python-qpid-0.14-6.el6.noarch
python-qpid-qmf-0.14-5.el6.i686
qpid-cpp-client-0.14-12.el6.i686
qpid-cpp-client-devel-0.14-12.el6.i686
qpid-cpp-client-devel-docs-0.14-12.el6.noarch
qpid-cpp-server-0.14-12.el6.i686
qpid-cpp-server-devel-0.14-12.el6.i686
qpid-cpp-server-store-0.14-12.el6.i686
qpid-cpp-server-xml-0.14-12.el6.i686
qpid-java-client-0.14-3.el6.noarch
qpid-java-common-0.14-3.el6.noarch
qpid-java-example-0.14-3.el6.noarch
qpid-qmf-0.14-5.el6.i686
qpid-tools-0.14-1.el6.noarch

How reproducible:
always

Steps to Reproduce:
1. Configure broker to use CRAM-MD5 authentication mechanism
2. Try to connect to broker using qpid-stat tool.
3.
  
Actual results:
authentication failure

Expected results:
authentication successful

Additional info:
Cpp clients seem to be working:
[root@lzhaldyb-rhel62i qpidd]# qpid-perftest --count=100 -s --mechanism=CRAM-MD5 --username=user --password=password
2327.52 1044.24 2287.98 2.23436
[root@lzhaldyb-rhel62i qpidd]# echo $?
0

Comment 3 Pavel Moravec 2012-05-22 08:20:30 UTC
*** Bug 823802 has been marked as a duplicate of this bug. ***

Comment 4 Justin Ross 2013-02-23 01:27:39 UTC
The work here is to establish that it is working on 0.22/2.4.

Comment 5 mick 2013-04-25 15:36:52 UTC
Works on 0.22

  2013-04-25 11:28:16 [Security] info qpid/broker/SaslAuthenticator.cpp:415: SASL: Starting authentication with mechanism: CRAM-MD5

...and perftest connects & runs to completion.

nihil obstat - imprimatur.

Comment 6 Frantisek Reznicek 2013-06-24 13:14:53 UTC
Sorry to say, I need to return to ASSIGNED as this defect looks in the same state as in time of defect filling:
...
dur:16, tst_cnt:15, err_cnt:0, ecodes:(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)
================== tstbatch localhost guest guest CRAM-MD5 True ==================
1579    24.2455 751.736 0.734117
Failed: ConnectionError - connection-forced: Authentication failed(320)
Failed: ConnectionError: connection-forced: Authentication failed(320)
Failed: ConnectionFailed - (None, 'connection-forced: Authentication failed')
Message(properties={'spout-id': '8e52ebba-cb30-40ac-bcc3-0b749f11ed05:0'}, content_type='t
ext/plain')
===---=== SUMMARY ===---===
dur:17, tst_cnt:20, err_cnt:3, ecodes:(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(1)(1)(1)(0)
...

Which means qpid-perftest and python spout are and were functional, however qpid-tools (here qpid-stat and qpid-config) are still failing.


-> ASSIGNED

Comment 8 Frantisek Reznicek 2013-06-24 13:35:59 UTC
Component corrected to qpid-tools + summary tuned.

Comment 11 Justin Ross 2013-06-25 20:49:48 UTC
Mick, please look at this one again.

(In reply to Frantisek Reznicek from comment #6)
> Sorry to say, I need to return to ASSIGNED as this defect looks in the same
> state as in time of defect filling:
> ...
> dur:16, tst_cnt:15, err_cnt:0,
> ecodes:(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)
> ================== tstbatch localhost guest guest CRAM-MD5 True
> ==================
> 1579    24.2455 751.736 0.734117
> Failed: ConnectionError - connection-forced: Authentication failed(320)
> Failed: ConnectionError: connection-forced: Authentication failed(320)
> Failed: ConnectionFailed - (None, 'connection-forced: Authentication failed')
> Message(properties={'spout-id': '8e52ebba-cb30-40ac-bcc3-0b749f11ed05:0'},
> content_type='t
> ext/plain')
> ===---=== SUMMARY ===---===
> dur:17, tst_cnt:20, err_cnt:3,
> ecodes:(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(1)(1)(1)(0)
> ...
> 
> Which means qpid-perftest and python spout are and were functional, however
> qpid-tools (here qpid-stat and qpid-config) are still failing.
> 
> 
> -> ASSIGNED

Comment 12 mick 2013-07-31 08:48:51 UTC
Yes, sorry -- I tested with wrong tools before.

I see the problem now, with latest packages  (see list below ) 
on both qpid-tool and qpid-config 

Both of them succeed when using DIGEST-MD5, and both fail when using CRAM-MD5

This was on RHEL 6.4

packages
{
cyrus-sasl-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-gssapi-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64
python-qpid-0.22-4.el6.noarch
python-qpid-qmf-0.22-7.el6.x86_64
python-saslwrapper-0.22-3.el6.x86_64
qpid-cpp-client-0.22-8.el6.x86_64
qpid-cpp-client-devel-0.22-8.el6.x86_64
qpid-cpp-client-devel-docs-0.22-8.el6.noarch
qpid-cpp-client-rdma-0.22-8.el6.x86_64
qpid-cpp-client-ssl-0.22-8.el6.x86_64
qpid-cpp-debuginfo-0.22-8.el6.x86_64
qpid-cpp-server-0.22-8.el6.x86_64
qpid-cpp-server-devel-0.22-8.el6.x86_64
qpid-cpp-server-ha-0.22-8.el6.x86_64
qpid-cpp-server-rdma-0.22-8.el6.x86_64
qpid-cpp-server-ssl-0.22-8.el6.x86_64
qpid-cpp-server-store-0.22-8.el6.x86_64
qpid-cpp-server-xml-0.22-8.el6.x86_64
qpid-cpp-tar-0.22-8.el6.noarch
qpid-java-client-0.22-5.el6.noarch
qpid-java-common-0.22-5.el6.noarch
qpid-java-example-0.22-5.el6.noarch
qpid-proton-c-0.4-2.2.el6.x86_64
qpid-proton-c-devel-0.4-2.2.el6.x86_64
qpid-proton-debuginfo-0.4-2.2.el6.x86_64
qpid-qmf-0.22-7.el6.x86_64
qpid-qmf-debuginfo-0.22-7.el6.x86_64
qpid-qmf-devel-0.22-7.el6.x86_64
qpid-snmpd-1.0.0-12.el6.x86_64
qpid-snmpd-debuginfo-1.0.0-12.el6.x86_64
qpid-tests-0.22-4.el6.noarch
qpid-tools-0.22-3.el6.noarch
saslwrapper-0.22-3.el6.x86_64
saslwrapper-devel-0.22-3.el6.x86_64

}

Comment 14 Petra Svobodová 2013-11-14 15:03:37 UTC
Whole python client does not support CRAM-MD5 authentication mechanism; try to run the attached client example to reproduce the issue, please.

Comment 15 Petra Svobodová 2013-11-14 15:07:03 UTC
Created attachment 823997 [details]
Python client CRAM-MD5 issue reproducer

Comment 16 Petra Svobodová 2013-11-14 15:15:25 UTC
Try to run the qmf2_qpid_ctrl.py client, please:

# ./qmf2_qpid_ctrl.py  --broker guest/guest@<hostname>:5672 --sasl-mechanisms CRAM-MD5 query type=queue name=q

The example works with PLAIN, ANONYMOUS and DIGEST-MD5 mechanisms well, but does not work with CRAM-MD5 mechanism.

Comment 25 Red Hat Bugzilla 2025-02-10 03:19:19 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.