Close window after access is granted through gateway

This commit is contained in:
Jakob A. Dam 2015-04-08 13:57:15 +02:00 committed by Jakob Aarøe Dam
parent e10bb5f6aa
commit 7ce790eda9

View file

@ -8,6 +8,8 @@ Public Class RDSHandler
Private Shared userSidTokens As New Hashtable Private Shared userSidTokens As New Hashtable
Private Shared tokenTimestamps As New Hashtable Private Shared tokenTimestamps As New Hashtable
Private Shared userLaunchTimestamps As New Hashtable
Private mPacket As RADIUSPacket Private mPacket As RADIUSPacket
Private mUsername As String Private mUsername As String
Private mPassword As String Private mPassword As String
@ -70,28 +72,34 @@ Public Class RDSHandler
' When the packet is an AppLaunchRequest the password attribute contains the session id! ' When the packet is an AppLaunchRequest the password attribute contains the session id!
Dim packetSessionId = mPassword Dim packetSessionId = mPassword
Dim storedSessionId = userSessions(mUsername)
Dim sessionId = userSessions(mUsername)
Dim sessionTimestamp = sessionTimestamps(mUsername) Dim sessionTimestamp = sessionTimestamps(mUsername)
If sessionId = Nothing Or sessionTimestamp = Nothing Then If storedSessionId = Nothing Or sessionTimestamp = Nothing Then
Console.WriteLine("Rejecting Access-Request to open app") Console.WriteLine("User has no session. MUST re-authenticate!")
mPacket.RejectAccessRequest() mPacket.RejectAccessRequest()
Exit Sub Exit Sub
End If End If
Dim tValid = DateDiff(DateInterval.Minute, sessionTimestamp, Now) If packetSessionId = storedSessionId Then
If tValid < CICRadarR.SessionTimeOut Then Dim minsSinceLastActivity = DateDiff(DateInterval.Minute, sessionTimestamp, Now)
If packetSessionId = sessionId Then If minsSinceLastActivity < CICRadarR.SessionTimeOut Then
Console.WriteLine("Accepting Request to open app") Console.WriteLine("Opening window for: " & mUsername)
' Pro-long open window ' Pro-long session
sessionTimestamps(sessionId) = Now sessionTimestamps(storedSessionId) = Now
' Opening window
userLaunchTimestamps(mUsername) = Now
mPacket.AcceptAccessRequest() mPacket.AcceptAccessRequest()
Exit Sub Exit Sub
Else
Console.WriteLine("Session timed out -- User MUST re-authenticate")
userSessions.Remove(mUsername)
sessionTimestamps.Remove(mUsername)
End If End If
Else
Console.WriteLine("Stored session id didn't match packet session id!")
End If End If
Console.WriteLine("Token timed out")
mPacket.RejectAccessRequest() mPacket.RejectAccessRequest()
End Sub End Sub
@ -99,11 +107,11 @@ Public Class RDSHandler
Console.WriteLine("Gateway Request for user: " & mUsername) Console.WriteLine("Gateway Request for user: " & mUsername)
Dim sessionId = userSessions(mUsername) Dim sessionId = userSessions(mUsername)
Dim sessionTimestamp = sessionTimestamps(mUsername) Dim launchTimestamp = userLaunchTimestamps(mUsername)
Dim attributes As New RADIUSAttributes Dim attributes As New RADIUSAttributes
If sessionId = Nothing Or sessionTimestamp = Nothing Then If sessionId = Nothing Or launchTimestamp = Nothing Then
Console.WriteLine("No user session... User must re-authenticate") Console.WriteLine("User's has no lauch window. User must re-authenticate")
mPacket.RejectAccessRequest() mPacket.RejectAccessRequest()
Exit Sub Exit Sub
End If End If
@ -114,16 +122,16 @@ Public Class RDSHandler
attributes.Add(proxyState) attributes.Add(proxyState)
End If End If
Dim tValid = DateDiff(DateInterval.Minute, sessionTimestamp, Now) Dim secondsSinceLaunch = DateDiff(DateInterval.Second, launchTimestamp, Now)
If tValid < CICRadarR.SessionTimeOut Then If secondsSinceLaunch < CICRadarR.LaunchTimeOut Then
Console.WriteLine("Accepting Reuqest to open app") Console.WriteLine("Allowing access through gateway for user: " & mUsername & " -- closing window")
sessionTimestamps(sessionId) = Now
mPacket.AcceptAccessRequest(attributes) mPacket.AcceptAccessRequest(attributes)
Exit Sub
Else Else
Console.WriteLine("Session IDs did not match") Console.WriteLine("Launch window has closed!")
End If End If
' close window
userLaunchTimestamps.Remove(mUsername)
End Sub End Sub
Public Sub ProcessAccessRequest() Public Sub ProcessAccessRequest()