function Authenticate_LDAP(void) $Insert LOGICAL /* equates for the base registry keys */ equ HKEY_CLASSES_ROOT$ to 0x80000000 equ HKEY_CURRENT_USER$ to 0x80000001 equ HKEY_LOCAL_MACHINE$ to 0x80000002 equ HKEY_USERS$ to 0x80000003 equ HKEY_PERFORMANCE_DATA$ to 0x80000004 equ HKEY_CURRENT_CONFIG$ to 0x80000005 equ HKEY_DYN_DATA$ to 0x80000006 equ KEY_QUERY_VALUE$ to 0x0001 equ ERROR_SUCCESS to 0x0000 Declare subroutine Set_Property.Net, Utility, RegQueryValueEx, Msg, Create_User, RTI_Create_User_Details Declare Subroutine Set_Property Declare function Active_Directory_Services, RegOpenKeyEx, RTI_GetNetworkUserName, RegCloseKey Declare Function Database_Services Log = @AppId<1> Oswrite Log to 'D:\Temp\auth.txt' Authenticated = False$ Options = 0 SamDesired = KEY_QUERY_VALUE$ KeyHandle = 0 Hkey = HKEY_LOCAL_MACHINE$ SubKey = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters":\00\ Stat = 0 Null = '' LockVariable KeyHandle as Long Stat = RegOpenKeyEx(Hkey, SubKey, Options, SamDesired, KeyHandle) If Stat = ERROR_SUCCESS Then Domain = str(\00\, 512) Reg_SZ = 1 CbBuf = 512 Key = "Domain":\00\ RegQueryValueEx(KeyHandle, Key, 0, Reg_SZ, Domain, CbBuf) Domain = Domain[1, CbBuf - 1] end rv = RegCloseKey(KeyHandle) UserADName = RTI_GetNetworkUserName() UserADGroups = Active_Directory_Services('GetADGroups', UserADName, Domain) **SSOInfo = Database_Services('ReadDataRow', 'SYSENV', 'CFG_LOGIN*':@AppId<1>) *SSOErrorMsg = SSOInfo<9> *SSOADGroups = Field(SSOInfo, @FM, 2, 3) SSOADGroups = Database_Services('ReadDataRow', 'SYSENV', 'SSO*LSL2') For GroupIndex = 3 to 1 Step -1 SSOADGroup = SSOADGroups If InList(UserADGroups, SSOADGroup, @FM) then @UserName = UserADName SecurityLevel = GroupIndex - 1 @Admin = SecurityLevel Authenticated = True$ Set_Property( "SYSTEM", "LOGININFO" , 'LSL2':@FM:UserADName:@FM:'') end Until Authenticated Next GroupIndex Swap 1 With 'True' In Authenticated Swap 0 With 'False' In Authenticated Log := ', Authenticated ':Authenticated Oswrite Log to 'D:\Temp\auth.txt' If Not(Authenticated) then Msg(@Window, 'SSO Error') Utility('DESTROY', 'SYSTEM') End Return