Finally got back around to working on this and wanted to provide a solution
in case anyone else runs into the same problem.

I was able to reproduce the problem using s3cmd, and noticed different
calls utilized different signature versions. Doing a GET operation on '/'
seemed to use v2 while a 'make bucket' command attempted to use v4. Since
the former succeeded and the latter failed, I called s3cmd with
'--signature-v2' and now all operations work. I'm still not able to use
boto3, but it's no longer an LDAP issue.

Josh



On Tue, Sep 5, 2017 at 10:26 AM, Josh Haft <pacc...@gmail.com> wrote:

> Thanks for your suggestions, Matt. ldapsearch functionality from the rados
> gw machines works fine using the same parameters specified in ceph.conf
> (uri, binddn, searchdn, ldap_secret). As expected I see network traffic
> to/from the ldap host when performing a search as well.
>
> The only configuration I have in /etc/openldap/ldap.conf is 'TLSREQCERT
> demand' and TLS_CACERTDIR pointing at the location of my certdb... is there
> something else required here for ceph-rgw or does it look elsewhere?
>
> Josh
>
>
>
>
> On Fri, Sep 1, 2017 at 11:15 PM, Matt Benjamin <mbenj...@redhat.com>
> wrote:
>
>> Hi Josh,
>>
>> I'm not certain, but you might try disabling the searchfilter to start
>> with.  If you're not seeing traffic, I would focus on verifying ldap
>> search connectivity using the same credentials, using the openldap
>> client, to rule out something low level.
>>
>> Matt
>>
>>
>> On Thu, Aug 31, 2017 at 3:33 PM, Josh <pacc...@gmail.com> wrote:
>> > Hello!
>> >
>> > I've setup LDAP authentication on an object gateway and am attempting to
>> > create a bucket via s3 using python's boto3. It works fine using the
>> access
>> > and secret key for a radosgw user, but access is denied using a token
>> > generated via radosgw-token with the LDAP user's credentials. The user
>> does
>> > exist in the directory (I'm using Active Directory), and I am able to
>> query
>> > for that user using the creds specified in rgw_ldap_binddn and
>> > rgw_ldap_secret.
>> >
>> > I've bumped the rgw logging to 20 and can see the request come in, but
>> it
>> > ultimately gets denied:
>> > 2017-08-30 15:44:55.754721 7f4878ff9700  2 req 1:0.000076:s3:PUT
>> > /foobar:create_bucket:authorizing
>> > 2017-08-30 15:44:55.754738 7f4878ff9700 10 v4 signature format = ****
>> > 2017-08-30 15:44:55.754746 7f4878ff9700 10 v4 credential format =
>> > ****/20170830/us-east-1/s3/aws4_request
>> > 2017-08-30 15:44:55.754750 7f4878ff9700 10 access key id = ****
>> > 2017-08-30 15:44:55.754755 7f4878ff9700 10 credential scope =
>> > 20170830/us-east-1/s3/aws4_request
>> > 2017-08-30 15:44:55.754769 7f4878ff9700 20 get_system_obj_state:
>> > rctx=0x7f4878ff2060 obj=default.rgw.users.keys:****
>> state=0x7f48f40131a8
>> > s->prefetch_data=0
>> > 2017-08-30 15:44:55.754778 7f4878ff9700 10 cache get:
>> > name=default.rgw.users.keys+**** : miss
>> > 2017-08-30 15:44:55.755312 7f4878ff9700 10 cache put:
>> > name=default.rgw.users.keys+**** info.flags=0
>> > 2017-08-30 15:44:55.755321 7f4878ff9700 10 adding
>> > default.rgw.users.keys+**** to cache LRU end
>> > 2017-08-30 15:44:55.755328 7f4878ff9700 10 error reading user info,
>> uid=****
>> > can't authenticate
>> > 2017-08-30 15:44:55.755330 7f4878ff9700 10 failed to authorize request
>> > 2017-08-30 15:44:55.755331 7f4878ff9700 20 handler->ERRORHANDLER:
>> > err_no=-2028 new_err_no=-2028
>> > 2017-08-30 15:44:55.755393 7f4878ff9700  2 req 1:0.000747:s3:PUT
>> > /foobar:create_bucket:op status=0
>> > 2017-08-30 15:44:55.755398 7f4878ff9700  2 req 1:0.000752:s3:PUT
>> > /foobar:create_bucket:http status=403
>> > 2017-08-30 15:44:55.755402 7f4878ff9700  1 ====== req done
>> > req=0x7f4878ff3710 op status=0 http_status=403 ======
>> > 2017-08-30 15:44:55.755409 7f4878ff9700 20 process_request() returned
>> -2028
>> >
>> > I am also running a tcpdump on the machine while I see these log
>> messages,
>> > but strangely I see no traffic destined for my configured LDAP server.
>> > Here's some info on my setup. It seems like I'm missing something very
>> > obvious; any help would be appreciated!
>> >
>> > # rpm -q ceph-radosgw
>> > ceph-radosgw-10.2.9-0.el7.x86_64
>> >
>> > # grep rgw /etc/ceph/ceph.conf
>> > [client.rgw.hostname]
>> > rgw_frontends = civetweb port=8081s ssl_certificate=/path/to/priva
>> te/key.pem
>> > debug rgw = 20
>> > rgw_s3_auth_use_ldap = true
>> > rgw_ldap_secret = "/path/to/creds/file"
>> > rgw_ldap_uri = "ldaps://hostname.domain.com:636"
>> > rgw_ldap_binddn = "CN=valid_user,OU=Accounts,DC=domain,DC=com"
>> > rgw_ldap_searchdn = "ou=Accounts,dc=domain,dc=com"
>> > rgw_ldap_dnattr = "uid"
>> > rgw_ldap_searchfilter = "objectclass=user"
>> >
>> >
>> > Thanks,
>> > Josh
>> >
>> > _______________________________________________
>> > ceph-users mailing list
>> > ceph-users@lists.ceph.com
>> > http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
>> >
>>
>>
>>
>> --
>>
>> Matt Benjamin
>> Red Hat, Inc.
>> 315 West Huron Street, Suite 140A
>> Ann Arbor, Michigan 48103
>>
>> http://www.redhat.com/en/technologies/storage
>>
>> tel.  734-821-5101
>> fax.  734-769-8938
>> cel.  734-216-5309
>>
>
>
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to