auth: For NTLM and KDC authentication, log the authentication duration
[samba.git] / source3 / auth / auth.c
index 3890cbcf024f1441c66a6d92eb9a078ce4e7a5bf..d13d0fe471c967d1f692c36b89dbff4d2fb7c231 100644 (file)
@@ -300,7 +300,9 @@ NTSTATUS auth_check_ntlm_password(TALLOC_CTX *mem_ctx,
        }
 
        log_authentication_event(NULL, NULL,
-                                user_info, nt_status,
+                                &auth_context->start_time,
+                                user_info,
+                                nt_status,
                                 server_info->info3->base.logon_domain.string,
                                 server_info->info3->base.account_name.string,
                                 unix_username, &sid);
@@ -331,7 +333,15 @@ fail:
                  user_info->client.account_name, user_info->mapped.account_name,
                  nt_errstr(nt_status), *pauthoritative));
 
-       log_authentication_event(NULL, NULL, user_info, nt_status, NULL, NULL, NULL, NULL);
+       log_authentication_event(NULL,
+                                NULL,
+                                &auth_context->start_time,
+                                user_info,
+                                nt_status,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL);
 
        ZERO_STRUCTP(pserver_info);
 
@@ -373,6 +383,8 @@ static NTSTATUS make_auth_context(TALLOC_CTX *mem_ctx,
                return NT_STATUS_NO_MEMORY;
        }
 
+       ctx->start_time = timeval_current();
+
        talloc_set_destructor((TALLOC_CTX *)ctx, auth_context_destructor);
 
        *auth_context = ctx;
@@ -504,42 +516,29 @@ NTSTATUS make_auth3_context_for_ntlm(TALLOC_CTX *mem_ctx,
                                     struct auth_context **auth_context)
 {
        const char *methods = NULL;
-       NTSTATUS nt_status;
 
        switch (lp_server_role()) {
        case ROLE_ACTIVE_DIRECTORY_DC:
                DEBUG(5,("Making default auth method list for server role = "
                         "'active directory domain controller'\n"));
-               return make_auth_context_specific(mem_ctx, auth_context, "samba4");
-       default:
+               methods = "samba4";
                break;
-       }
-
-       if (lp_auth_methods()) {
-               DEBUG(5,("Using specified auth order\n"));
-               nt_status = make_auth_context_text_list(
-                       mem_ctx, auth_context,
-                       discard_const_p(char *, lp_auth_methods()));
-               return nt_status;
-       }
-
-       switch (lp_server_role()) {
        case ROLE_DOMAIN_MEMBER:
                DEBUG(5,("Making default auth method list for server role = 'domain member'\n"));
-               methods = "guest sam winbind sam_ignoredomain";
+               methods = "anonymous sam winbind sam_ignoredomain";
                break;
        case ROLE_DOMAIN_BDC:
        case ROLE_DOMAIN_PDC:
                DEBUG(5,("Making default auth method list for DC\n"));
-               methods = "guest sam winbind sam_ignoredomain";
+               methods = "anonymous sam winbind sam_ignoredomain";
                break;
        case ROLE_STANDALONE:
                DEBUG(5,("Making default auth method list for server role = 'standalone server', encrypt passwords = yes\n"));
                if (lp_encrypt_passwords()) {
-                       methods = "guest sam_ignoredomain";
+                       methods = "anonymous sam_ignoredomain";
                } else {
                        DEBUG(5,("Making default auth method list for server role = 'standalone server', encrypt passwords = no\n"));
-                       methods = "guest unix";
+                       methods = "anonymous unix";
                }
                break;
        default:
@@ -554,22 +553,6 @@ NTSTATUS make_auth3_context_for_netlogon(TALLOC_CTX *mem_ctx,
                                         struct auth_context **auth_context)
 {
        const char *methods = NULL;
-       NTSTATUS nt_status;
-
-       /*
-        * We do the lp_auth_methods check before
-        * the lp_server_role check in order to
-        * backward compatible. The "auth methods" option
-        * is deprecated now, so this will go away in a future
-        * release.
-        */
-       if (lp_auth_methods()) {
-               DBG_INFO("Using specified auth order for netlogon\n");
-               nt_status = make_auth_context_text_list(
-                       mem_ctx, auth_context,
-                       discard_const_p(char *, lp_auth_methods()));
-               return nt_status;
-       }
 
        switch (lp_server_role()) {
        case ROLE_DOMAIN_BDC: