diff options
Diffstat (limited to 'ipaserver/rpcserver.py')
-rw-r--r-- | ipaserver/rpcserver.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/ipaserver/rpcserver.py b/ipaserver/rpcserver.py index 357e836f9..6bd02c918 100644 --- a/ipaserver/rpcserver.py +++ b/ipaserver/rpcserver.py @@ -610,6 +610,21 @@ class KerberosSession(HTTP_Status): headers.append(('IPASESSION', session_cookie)) + # Optimize later operations by prefetching and caching a ticket for the + # ldap service instead of requesting a new one for each ldap operation + try: + store = {'ccache': ccache_name} + creds = gssapi.Credentials(usage='initiate', store=store) + name = gssapi.Name('ldap@{0}'.format(target), + name_type=gssapi.NameType.hostbased_service) + gss_ctx = gssapi.SecurityContext(creds=creds, name=name, + usage='initiate') + gss_ctx.step() + creds.store(store=store, usage='initiate', overwrite=True) + except Exception as e: + self.debug('Failed Init-sec for ldap@ (caching ticket): %s' % e) + pass + start_response(HTTP_STATUS_SUCCESS, headers) return [''] |