On Mon, Sep 04, 2023 at 06:43:02PM +0100, Sam Morris via FreeIPA-users wrote:
I get the same when I run it on ipa3 (also running RHEL 8).
I changed 'server' in /etc/ipa/default.conf to point to this server and I see the same errors:
Sep 05 14:02:49 ipa3.ipa.example.com krb5kdc[1715](info): TGS_REQ : handle_authdata (-1765328371) Sep 05 14:02:49 ipa3.ipa.example.com krb5kdc[1715](info): TGS_REQ (6 etypes {aes256-cts-hmac-sha1-96(18), aes256-cts-hmac-sha384-192(20), camellia256-cts-cmac(26), aes128-cts-hmac-sha1-96(17), aes128-cts-hmac-sha256-128(19), camellia128-cts-cmac(25)}) 157.90.149.68: HANDLE_AUTHDATA: authtime 1693922568, etypes {rep=UNSUPPORTED:(0)} HTTP/ipa3.ipa.example.com@IPA.EXAMPLE.COM for ldap/ipa3.ipa.example.com@IPA.EXAMPLE.COM, KDC can't fulfill requested option Sep 05 14:02:49 ipa3.ipa.example.com krb5kdc[1715](info): ... CONSTRAINED-DELEGATION s4u-client=host/xoanon.ipa.example.com@IPA.EXAMPLE.COM
I had a look through the kdc logs with the following command:
$ grep -h -A2 'TGS_REQ : handle_authdata' /var/log/krb5kdc.log-* /var/log/krb5kdc.log
... and the results are interesting. It seems that since May 12, my RHEL 8 servers started refusing to perform constrained delegation requests for both user and host/service principals.
The failures for users stopped after I ran 'ipa config-mod --enable-sid --add-sids' as kindly recommended by Alex in the thread at https://lists.fedorahosted.org/archives/list/freeipa-users@lists.fedorahosted.org/thread/RSAXURG6AR3MWONR3CZSOOI5ULDB2UVC/.
But since then, the RHEL 8 servers have continued to fail to process constrained delegation requests on behalf of host and service principals.
In another reply in this thread, Alex wrote:
Since the client here is host/xoanon.ipa.example.com, this means this client most likely has no SID associated with it and cannot be associated with any of the two supported classes of PAC-enabled services: IPA servers and IPA clients. Otherwise it would have had a PAC in the ticket.
Now that I understand a little more about what's going on I have found that I can reproduce this problem without having to involve dogtag and certmonger.
I believe this problem prevents any IPA API from a host or service princpal from succeding, when the request is being processed on a RHEL 8 server, for the reason that the kdc refuses the constrained delegation request made by the API to get a ticket to the ldap server on behalf of the client.
[root@xoanon ~]# KRB5_CLIENT_KTNAME=/etc/hitron-exporter.keytab kinit -V -c /tmp/hitron.cc -k -i Using specified cache: /tmp/hitron.cc Using principal: HTTP/hitron-exporter.ipa.example.com@IPA.EXAMPLE.COM Authenticated to Kerberos v5
[root@xoanon ~]# KRB5CCNAME=/tmp/hitron.cc ipa -d service-show HTTP/hitron-exporter.ipa.example.com [...] ipa: DEBUG: trying https://ipa5.ipa.example.com/ipa/session/json ipa: DEBUG: New HTTP connection (ipa5.ipa.example.com) ipa: DEBUG: HTTP connection destroyed (ipa5.ipa.example.com) Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/ipalib/rpc.py", line 730, in single_request response.msg) xmlrpc.client.ProtocolError: <ProtocolError for ipa5.ipa.example.com/ipa/session/json: 401 Unauthorized> ipa: DEBUG: trying https://ipa5.ipa.example.com/ipa/session/json ipa: DEBUG: New HTTP connection (ipa5.ipa.example.com) ipa: DEBUG: HTTP connection destroyed (ipa5.ipa.example.com) Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/ipalib/rpc.py", line 730, in single_request response.msg) xmlrpc.client.ProtocolError: <ProtocolError for ipa5.ipa.example.com/ipa/session/json: 401 Unauthorized> ipa: INFO: Connection to https://ipa5.ipa.example.com/ipa/session/json failed with <ProtocolError for ipa5.ipa.example.com/ipa/session/json: 401 Unauthorized> [... client goes on to try ipa6, an RHEL 9 server, which works ...]
On ipa5:
Sep 05 14:53:10 ipa5.ipa.example.com krb5kdc[223385](info): TGS_REQ : handle_authdata (-1765328371) Sep 05 14:53:10 ipa5.ipa.example.com krb5kdc[223385](info): TGS_REQ (6 etypes {aes256-cts-hmac-sha1-96(18), aes256-cts-hmac-sha384-192(20), camellia256-cts-cmac(26), aes128-cts-hmac-sha1-96(17), aes128-cts-hmac-sha256-128(19), camellia128-cts-cmac(25)}) 192.168.88.5: HANDLE_AUTHDATA: authtime 1693925569, etypes {rep=UNSUPPORTED:(0)} HTTP/ipa5.ipa.example.com@IPA.EXAMPLE.COM for ldap/ipa5.ipa.example.com@IPA.EXAMPLE.COM, KDC can't fulfill requested option Sep 05 14:53:10 ipa5.ipa.example.com krb5kdc[223385](info): ... CONSTRAINED-DELEGATION s4u-client=HTTP/hitron-exporter.ipa.example.com@IPA.EXAMPLE.COM
In most cases python-ipaclient automatically retries, and eventually hits a RHEL 9 server which is why I hadn't noticed until now. It's only certmonger's ipa-getcert command that gives up immediately instead of trying another server.
If you're reading along and have an up-to-date RHEL 8 environment, please try calling the IPA API on behalf of a host or service principal and report the result. In the mean time I'll see if I can reproduce this on a fresh CentOS Stream 8 server.