RDPGW 1.0.0.1744875936
dotnet add package RDPGW --version 1.0.0.1744875936
NuGet\Install-Package RDPGW -Version 1.0.0.1744875936
<PackageReference Include="RDPGW" Version="1.0.0.1744875936" />
<PackageVersion Include="RDPGW" Version="1.0.0.1744875936" />
<PackageReference Include="RDPGW" />
paket add RDPGW --version 1.0.0.1744875936
#r "nuget: RDPGW, 1.0.0.1744875936"
#addin nuget:?package=RDPGW&version=1.0.0.1744875936
#tool nuget:?package=RDPGW&version=1.0.0.1744875936
RDP Gateway .Net (RDPGW.Net)
RDPGW.Net is a lightweight and extensible ASP.NET library that brings Remote Desktop Gateway (RDP Gateway) functionality directly into your .NET web application. With easy plug-and-play integration, you can securely expose RDP services through your existing web app, with support for custom authentication and authorization flows.
✨ Features
- 🖥️ Seamlessly integrate RDP Gateway into any ASP.NET Core app.
- 🔐 Customizable authentication (Basic, Digest, Negotiate).
- 🛡️ Fine-grained resource-based authorization.
- ⚙️ Simple service registration and middleware configuration.
🚀 Getting Started
1. Add the Library
Add the package to your project:
dotnet add package RDPGW --version
2. Register the Services
In your Program.cs
or wherever you're building your service container, add:
builder.Services.AddRDPGW();
Optional: Add Custom Handlers for Authentication and/or Authorization
builder.Services.AddSingleton<IRDPGWAuthenticationHandler, AuthHandler>();
builder.Services.AddSingleton<IRDPGWAuthorizationHandler, AuthorizationHandler>();
3. Use the Middleware
Place this as the first middleware in the pipeline:
var app = builder.Build();
app.UseRDPGW(); // Must be first
// Other middlewares
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
🔐 Authentication & Authorization
Custom Authentication
To authenticate users, implement IRDPGWAuthenticationHandler
. The interface provides hooks for Basic, Digest, and Negotiate methods.
public class AuthHandler : IRDPGWAuthenticationHandler
{
public Task<RDPGWAuthenticationResult> HandleBasicAuth(string auth)
{
var challenge = Encoding.UTF8.GetString(Convert.FromBase64String(auth));
var split = challenge.Split(":");
var userName = split[0];
var userPassword = split[1];
// Your authentication logic here
return Task.FromResult(RDPGWAuthenticationResult.Success(userName));
}
public Task<RDPGWAuthenticationResult> HandleDigestAuth(string auth)
{
throw new NotImplementedException(); // Not used in this example.
}
public Task<RDPGWAuthenticationResult> HandleNegotiateAuth(string auth)
{
throw new NotImplementedException(); // Not used in this example.
}
}
Custom Authorization
To control access to specific RDP resources, implement IRDPGWAuthorizationHandler
:
public class AuthorizationHandler : IRDPGWAuthorizationHandler
{
public Task<bool> HandleUserAuthorization(string userId, string resource)
{
// Your authorization logic here
return Task.FromResult(true); // Allow access
}
}
The userId
comes from your authentication handler. The resource
is the identifier of the RDP target being accessed.
📞 Support & Contribution
- Found a bug? Want to suggest a feature? Open an issue.
- Contributions welcome via PRs!
- License: GNU GPL v3
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.0.1744875936 | 191 | 4/17/2025 |
1.0.0.1744875505 | 174 | 4/17/2025 |
1.0.0.1744874852 | 178 | 4/17/2025 |
1.0.0.1744797680 | 188 | 4/16/2025 |
1.0.0.1744793418 | 170 | 4/16/2025 |
1.0.0.1744792665 | 175 | 4/16/2025 |
1.0.0.1744789472 | 182 | 4/16/2025 |
1.0.0.1744789247 | 176 | 4/16/2025 |
1.0.0.1744782208 | 183 | 4/16/2025 |
1.0.0.1744730268 | 199 | 4/15/2025 |
1.0.0.1744729656 | 189 | 4/15/2025 |
1.0.0.1744727041 | 176 | 4/15/2025 |
1.0.0.1744725348 | 182 | 4/15/2025 |
1.0.0.1744721122 | 182 | 4/15/2025 |
1.0.0.1744720849 | 170 | 4/15/2025 |
1.0.0.1744028133 | 166 | 4/7/2025 |
1.0.0.1744025876 | 154 | 4/7/2025 |
1.0.0.1744025736 | 149 | 4/7/2025 |
1.0.0.1744025200 | 152 | 4/7/2025 |
1.0.0.1744025022 | 159 | 4/7/2025 |
1.0.0 | 154 | 4/7/2025 |