open-insight/LSL2/STPROC/AUTHENTICATE_LDAP.txt
2024-05-22 14:06:46 -07:00

75 lines
2.5 KiB
Plaintext

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<GroupIndex>
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