Configuration/Authentication Settings/Active Directory (with NTLM)

From Davical
Jump to navigationJump to search

To make DAViCal authenticate from Active Directory please read Configuration/AD first.

This page takes off from where Configuration/AD leaves off. If you have completed the previous sections you are now able to use AD to authenticate your users, but the users much provide authentication credentials each time the DAViCal server is accessed. In the page we discuss how to use mod_ntlm to create an SSO environment so that the client obtains the authentication information using the NTLM protocal.

(Please note that though the NTLMv3 protocal is considered fairly secure, the implementation described here is only marginally so. Consider using only within a secure environment such as a firewall protected LAN.)


mod_ntlm is a non-standard Apache module to allow Apache to perform NTLM authentication. The module can be obtained at the following: mod_ntlm.

The module is a bit old and will not compile according to the included instructions at the time of this writing (Feb 26, 2008).

Based on instructions found at Ntlm Authentication I was able to compile the module.

At this point let me review my environment just in case and for reference;

  • Ubuntu 7.10 Gutsy
  • Apache2.2
  • DAViCal 0.9.4
  • PostgreSQL 8.2
  • PHP5
  • mod_ntlm 2.0.1

To compile the mod_ntlm module;

  1. Edit smbval/ (basically remover "static" from lines 25,26 and 35)
diff -r mod_ntlm2-0.1/smbval/ mod_ntlm2-0.1-fixed/smbval/
< static int SMBlib_errno;
< static int SMBlib_SMB_Error;
> int SMBlib_errno;
> int SMBlib_SMB_Error;
< static SMB_State_Types SMBlib_State;
> SMB_State_Types SMBlib_State;
  1. Edit the Makefile (change to
diff -r mod_ntlm2-0.1/Makefile mod_ntlm2-0.1-fixed/Makefile
<       $(APXS) -i -a -n 'ntlm'
>       $(APXS) -i -a -n 'ntlm'

  1. Finally edit mod_ntlm.c
diff -r mod_ntlm2-0.1/mod_ntlm.c mod_ntlm2-0.1-fixed/mod_ntlm.c
<     apr_pool_sub_make(&sp,p,NULL);
>     /*
>      * apr_pool_sub_make(&sp,p,NULL);
>      *
>      * This function call is not longer available with apache 2.2
>      * Try replacing it with apr_pool_create_ex()
>      */
>     apr_pool_create_ex(&sp,p,NULL,NULL);