SimpleW.Helper.BasicAuth
26.0.0
dotnet add package SimpleW.Helper.BasicAuth --version 26.0.0
NuGet\Install-Package SimpleW.Helper.BasicAuth -Version 26.0.0
<PackageReference Include="SimpleW.Helper.BasicAuth" Version="26.0.0" />
<PackageVersion Include="SimpleW.Helper.BasicAuth" Version="26.0.0" />
<PackageReference Include="SimpleW.Helper.BasicAuth" />
paket add SimpleW.Helper.BasicAuth --version 26.0.0
#r "nuget: SimpleW.Helper.BasicAuth, 26.0.0"
#:package SimpleW.Helper.BasicAuth@26.0.0
#addin nuget:?package=SimpleW.Helper.BasicAuth&version=26.0.0
#tool nuget:?package=SimpleW.Helper.BasicAuth&version=26.0.0
SimpleW.Helper.BasicAuth
Features
SimpleW.Helper.BasicAuth is the reusable HTTP Basic auth engine for SimpleW.
It lets you:
- parse
Authorization: Basic ... - validate username/password pairs
- build a
HttpPrincipal - send a
401Basic challenge response
This package does not decide which route must be protected. That policy stays in your middleware.
Getting Started
Minimal helper usage:
using System;
using SimpleW;
using SimpleW.Helper.BasicAuth;
namespace Sample {
class Program {
static async Task Main() {
var server = new SimpleWServer(System.Net.IPAddress.Any, 2015);
BasicAuthHelper basic = new(options => {
options.Users = [
new BasicUser("admin", "secret")
];
});
server.UseMiddleware(async (session, next) => {
// restore the basicauth principal
if (basic.TryAuthenticate(session, out HttpPrincipal principal)) {
session.Principal = principal;
}
// fast path
if (session.Metadata.Has<AllowAnonymousAttribute>()) {
await next().ConfigureAwait(false);
return;
}
// check principal
BasicAuthAttribute? auth = session.Metadata.Get<BasicAuthAttribute>();
if (auth != null && !session.Principal.IsAuthenticated) {
await basic.SendChallengeAsync(session, auth.Realm).ConfigureAwait(false);
return;
}
await next().ConfigureAwait(false);
});
server.MapController<AdminController>("/api");
await server.RunAsync();
}
}
[Route("/admin")]
[BasicAuth("Admin Area")]
public class AdminController : Controller {
[Route("GET", "/me")]
public object Me() {
return new {
user = Principal.Name
};
}
[AllowAnonymous]
[Route("GET", "/health")]
public object Health() {
return new { ok = true };
}
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class BasicAuthAttribute : Attribute, IHandlerMetadata {
public BasicAuthAttribute(string realm = "Restricted") {
Realm = realm;
}
public string Realm { get; }
}
In a helper-only integration, BasicAuthAttribute is typically an application-defined metadata attribute.
If you want a ready-to-use metadata-driven module that restores the principal and enforces [BasicAuth] / [AllowAnonymous] for you, use SimpleW.Service.BasicAuth.
Documentation
To check out docs, visit simplew.net.
Changelog
Detailed changes for each release are documented in the CHANGELOG.
Contribution
Feel free to report issue.
License
This library is under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. 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 is compatible. 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. |
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SimpleW.Helper.BasicAuth:
| Package | Downloads |
|---|---|
|
SimpleW.Service.BasicAuth
HTTP Basic authentication module for SimpleW with metadata-driven protection, configurable challenge realms, and convenience integration built on top of SimpleW.Helper.BasicAuth. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 26.0.0 | 95 | 4/26/2026 |
