mirror of
https://github.com/jakobadam/RDSFactor.git
synced 2025-08-11 10:29:19 +02:00
Close window after access is granted through gateway
This commit is contained in:
parent
e10bb5f6aa
commit
7ce790eda9
1 changed files with 28 additions and 20 deletions
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue