mirror of
https://github.com/jakobadam/RDSFactor.git
synced 2025-06-10 14:34:32 +02:00
63 lines
No EOL
1.8 KiB
C#
63 lines
No EOL
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.Configuration;
|
|
|
|
using RADAR;
|
|
|
|
public partial class CheckToken : System.Web.UI.Page
|
|
{
|
|
|
|
String radiusServer = ConfigurationManager.AppSettings["RadiusServer"];
|
|
String radiusSharedSecret = ConfigurationManager.AppSettings["RadiusSecret"];
|
|
|
|
RADIUSClient radiusClient;
|
|
String username;
|
|
String token;
|
|
|
|
public CheckToken()
|
|
{
|
|
radiusClient = new RADIUSClient(radiusServer, 1812, radiusSharedSecret);
|
|
}
|
|
|
|
// Check validity of token (radius session id) by authenticating against
|
|
// the RADIUS server
|
|
//
|
|
// Called when clicking on applications
|
|
//
|
|
// Returns 401 if not valid
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
username = (string)Session["DomainUserName"];
|
|
HttpCookie tokenCookie = Request.Cookies["RadiusSessionId"];
|
|
|
|
if (tokenCookie == null)
|
|
{
|
|
throw new HttpException(401, "Token required");
|
|
}
|
|
token = tokenCookie.Value;
|
|
|
|
VendorSpecificAttribute vsa = new VendorSpecificAttribute(VendorSpecificType.Generic, "LAUNCH");
|
|
RADIUSAttributes atts = new RADIUSAttributes();
|
|
vsa.SetRADIUSAttribute(ref atts);
|
|
|
|
try
|
|
{
|
|
RADIUSPacket response = radiusClient.Authenticate(username, token, atts);
|
|
if (response.Code == RadiusPacketCode.AccessAccept)
|
|
{
|
|
Response.Write("Ready to launch application. Granted access!");
|
|
}
|
|
else
|
|
{
|
|
throw new HttpException(401, "Token is no longer valid!");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new HttpException(500, "Exception! failure. " + ex.Message);
|
|
}
|
|
}
|
|
} |