Files
FakeNTLMServer/Program.cs
TekH 893b44565c Enable Swagger via config and add project version metadata
Added versioning fields to FakeNTLMServer.csproj for assembly and informational versioning. Introduced "EnableSwagger" setting in appsettings.json to allow Swagger UI outside development environments. Reformatted authentication registration in Program.cs for clarity.
2026-03-16 15:17:57 +01:00

73 lines
2.0 KiB
C#

using Microsoft.AspNetCore.Authentication.Negotiate;
using Microsoft.OpenApi.Models;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
builder.Services.AddAuthorization();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new OpenApiInfo
{
Title = "FakeNTLMServer",
Version = "v1",
Description = "NTLM/Negotiate authentication test server"
});
options.AddSecurityDefinition("Negotiate", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.Http,
Scheme = "Negotiate",
Description = "Windows Authentication (NTLM/Kerberos). Credentials are sent automatically by the browser."
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Negotiate"
}
},
Array.Empty<string>()
}
});
var xmlFile = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
if (File.Exists(xmlPath))
options.IncludeXmlComments(xmlPath);
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment() || app.Configuration.GetValue<bool>("EnableSwagger"))
{
app.UseSwagger();
app.UseSwaggerUI(options =>
{
// Enable sending credentials (NTLM tokens) with Swagger UI requests
options.ConfigObject.AdditionalItems["withCredentials"] = true;
});
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();