diff --git a/README.ru.md b/README.ru.md
index e1ae47a..a8046fb 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -350,19 +350,6 @@ sudo systemctl enable multifactor-radius
}
```
-### Дополнительные RADIUS атрибуты
-
-```xml
-
-
-
-
-
-
-
-
-```
-
## Запуск компонента
После настройки конфигурации запустите компонент:
diff --git a/src/.dockerignore b/src/.dockerignore
new file mode 100644
index 0000000..fe1152b
--- /dev/null
+++ b/src/.dockerignore
@@ -0,0 +1,30 @@
+**/.classpath
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
+!**/.gitignore
+!.git/HEAD
+!.git/config
+!.git/packed-refs
+!.git/refs/heads/**
\ No newline at end of file
diff --git a/src/MultiFactor.Radius.Adapter.Tests/MultiFactor.Radius.Adapter.Tests.csproj b/src/MultiFactor.Radius.Adapter.Tests/MultiFactor.Radius.Adapter.Tests.csproj
index 62c9bc3..010d9f9 100644
--- a/src/MultiFactor.Radius.Adapter.Tests/MultiFactor.Radius.Adapter.Tests.csproj
+++ b/src/MultiFactor.Radius.Adapter.Tests/MultiFactor.Radius.Adapter.Tests.csproj
@@ -154,6 +154,12 @@
+
+
+ ..\libs\LdapForNet.dll
+
+
+
Always
diff --git a/src/MultiFactor.Radius.Adapter/Dockerfile b/src/MultiFactor.Radius.Adapter/Dockerfile
new file mode 100644
index 0000000..965cbd2
--- /dev/null
+++ b/src/MultiFactor.Radius.Adapter/Dockerfile
@@ -0,0 +1,26 @@
+#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
+
+FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
+RUN apt-get update && apt-get install -y libldap-2.4-2
+RUN ln -s libldap-2.4.so.2 /usr/lib/x86_64-linux-gnu/libldap.so.2
+EXPOSE 80
+EXPOSE 443
+EXPOSE 1812/udp
+
+FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
+ARG BUILD_CONFIGURATION=Release
+WORKDIR /src
+COPY ["MultiFactor.Radius.Adapter/MultiFactor.Radius.Adapter.csproj", "MultiFactor.Radius.Adapter/"]
+RUN dotnet restore "./MultiFactor.Radius.Adapter/MultiFactor.Radius.Adapter.csproj"
+COPY . .
+WORKDIR "/src/MultiFactor.Radius.Adapter"
+RUN dotnet build "./MultiFactor.Radius.Adapter.csproj" -c $BUILD_CONFIGURATION -o /app/build
+
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./MultiFactor.Radius.Adapter.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "multifactor-radius-adapter.dll"]
\ No newline at end of file
diff --git a/src/MultiFactor.Radius.Adapter/Extensions/ConfigureApplicationExtension.cs b/src/MultiFactor.Radius.Adapter/Extensions/ConfigureApplicationExtension.cs
index 5420092..f85df85 100644
--- a/src/MultiFactor.Radius.Adapter/Extensions/ConfigureApplicationExtension.cs
+++ b/src/MultiFactor.Radius.Adapter/Extensions/ConfigureApplicationExtension.cs
@@ -60,11 +60,11 @@ public static RadiusHostApplicationBuilder AddLogging(this RadiusHostApplication
var services = new ServiceCollection();
var appVarDescriptor = builder.InternalHostApplicationBuilder.Services.FirstOrDefault(x => x.ServiceType == typeof(ApplicationVariables))
- ?? throw new System.Exception($"Service type '{typeof(ApplicationVariables)}' was not found in the RadiusHostApplicationBuilder services");
+ ?? throw new Exception($"Service type '{typeof(ApplicationVariables)}' was not found in the RadiusHostApplicationBuilder services");
services.Add(appVarDescriptor);
var rootConfigProvDescriptor = builder.InternalHostApplicationBuilder.Services.FirstOrDefault(x => x.ServiceType == typeof(IRootConfigurationProvider))
- ?? throw new System.Exception($"Service type '{typeof(IRootConfigurationProvider)}' was not found in the RadiusHostApplicationBuilder services");
+ ?? throw new Exception($"Service type '{typeof(IRootConfigurationProvider)}' was not found in the RadiusHostApplicationBuilder services");
services.Add(rootConfigProvDescriptor);
services.AddSingleton();
diff --git a/src/MultiFactor.Radius.Adapter/Framework/Context/RadiusContext.cs b/src/MultiFactor.Radius.Adapter/Framework/Context/RadiusContext.cs
index 1b8bf59..864b4b4 100644
--- a/src/MultiFactor.Radius.Adapter/Framework/Context/RadiusContext.cs
+++ b/src/MultiFactor.Radius.Adapter/Framework/Context/RadiusContext.cs
@@ -19,12 +19,12 @@ namespace MultiFactor.Radius.Adapter.Framework.Context
///
public class RadiusContext
{
- public RadiusContext(IRadiusPacket request,
+ public RadiusContext(
+ IRadiusPacket request,
IClientConfiguration clientConfiguration,
IServiceProvider provider)
{
RequestPacket = request ?? throw new ArgumentNullException(nameof(request));
- ReceivedAt = DateTime.Now;
Configuration = clientConfiguration ?? throw new ArgumentNullException(nameof(clientConfiguration));
RequestServices = provider ?? throw new ArgumentNullException(nameof(provider));
Authentication = new();
@@ -40,10 +40,11 @@ public RadiusContext(IRadiusPacket request,
/// Current request packet.
///
public IRadiusPacket RequestPacket { get; }
- public DateTime ReceivedAt { get; }
+
public RadiusPacketHeader Header => RequestPacket.Header;
public IRadiusPacket ResponsePacket { get; set; }
+
public PacketCode ResponseCode => Authentication.ToPacketCode();
///
@@ -55,7 +56,6 @@ public RadiusContext(IRadiusPacket request,
/// Challenge state.
///
public string State { get; private set; }
-
public string ReplyMessage { get; private set; }
///
diff --git a/src/MultiFactor.Radius.Adapter/MultiFactor.Radius.Adapter.csproj b/src/MultiFactor.Radius.Adapter/MultiFactor.Radius.Adapter.csproj
index dfe53eb..f9a8265 100644
--- a/src/MultiFactor.Radius.Adapter/MultiFactor.Radius.Adapter.csproj
+++ b/src/MultiFactor.Radius.Adapter/MultiFactor.Radius.Adapter.csproj
@@ -5,7 +5,7 @@
multifactor-radius-adapter
Multifactor
Multifactor Radus Adapter
- 2.0.0
+ 2.1.0
@@ -18,13 +18,15 @@
true
+ f07ad043-43df-44e3-965d-beb88a9eac86
+ Linux
-
+
@@ -52,6 +54,9 @@
Always
+
+ Always
+
@@ -62,4 +67,10 @@
+
+
+ ..\libs\LdapForNet.dll
+
+
+
diff --git a/src/MultiFactor.Radius.Adapter/Properties/launchSettings.json b/src/MultiFactor.Radius.Adapter/Properties/launchSettings.json
index b80472d..18e68ac 100644
--- a/src/MultiFactor.Radius.Adapter/Properties/launchSettings.json
+++ b/src/MultiFactor.Radius.Adapter/Properties/launchSettings.json
@@ -10,8 +10,11 @@
},
"Docker": {
"commandName": "Docker",
- "launchBrowser": false,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "localhost",
+ "LD_DEBUG": "libs"
+ },
"publishAllPorts": true,
"useSSL": false
}
diff --git a/src/MultiFactor.Radius.Adapter/Server/Pipeline/FirstFactorAuthentication/FirstFactorAuthenticationMiddleware.cs b/src/MultiFactor.Radius.Adapter/Server/Pipeline/FirstFactorAuthentication/FirstFactorAuthenticationMiddleware.cs
index 02707ed..77ea944 100644
--- a/src/MultiFactor.Radius.Adapter/Server/Pipeline/FirstFactorAuthentication/FirstFactorAuthenticationMiddleware.cs
+++ b/src/MultiFactor.Radius.Adapter/Server/Pipeline/FirstFactorAuthentication/FirstFactorAuthenticationMiddleware.cs
@@ -14,12 +14,10 @@ namespace MultiFactor.Radius.Adapter.Server.Pipeline.FirstFactorAuthentication
public class FirstFactorAuthenticationMiddleware : IRadiusMiddleware
{
private readonly IFirstFactorAuthenticationProcessorProvider _firstAuthFactorProcessorProvider;
- private readonly IRadiusRequestPostProcessor _requestPostProcessor;
- public FirstFactorAuthenticationMiddleware(IFirstFactorAuthenticationProcessorProvider firstAuthFactorProcessorProvider, IRadiusRequestPostProcessor requestPostProcessor)
+ public FirstFactorAuthenticationMiddleware(IFirstFactorAuthenticationProcessorProvider firstAuthFactorProcessorProvider)
{
_firstAuthFactorProcessorProvider = firstAuthFactorProcessorProvider ?? throw new ArgumentNullException(nameof(firstAuthFactorProcessorProvider));
- _requestPostProcessor = requestPostProcessor ?? throw new ArgumentNullException(nameof(requestPostProcessor));
}
public async Task InvokeAsync(RadiusContext context, RadiusRequestDelegate next)
diff --git a/src/MultiFactor.Radius.Adapter/Server/RadiusResponseSender.cs b/src/MultiFactor.Radius.Adapter/Server/RadiusResponseSender.cs
index 77c6232..8361f2c 100644
--- a/src/MultiFactor.Radius.Adapter/Server/RadiusResponseSender.cs
+++ b/src/MultiFactor.Radius.Adapter/Server/RadiusResponseSender.cs
@@ -25,7 +25,6 @@
using Microsoft.Extensions.Logging;
using MultiFactor.Radius.Adapter.Configuration.Core;
using MultiFactor.Radius.Adapter.Core.Radius;
-using System;
using System.Net;
namespace MultiFactor.Radius.Adapter.Server
diff --git a/src/MultiFactor.Radius.Adapter/Services/BindIdentityFormatter.cs b/src/MultiFactor.Radius.Adapter/Services/BindIdentityFormatter.cs
index 0d3682a..734e887 100644
--- a/src/MultiFactor.Radius.Adapter/Services/BindIdentityFormatter.cs
+++ b/src/MultiFactor.Radius.Adapter/Services/BindIdentityFormatter.cs
@@ -33,7 +33,7 @@ public string FormatIdentity(LdapIdentity user, string ldapUri)
return _clientConfiguration.FirstFactorAuthenticationSource switch
{
Configuration.AuthenticationSource.None or Configuration.AuthenticationSource.ActiveDirectory => FormatIdentityAD(user, ldapUri),
- Configuration.AuthenticationSource.Ldap => FormatIdentityLdap(user, ldapUri),
+ Configuration.AuthenticationSource.Ldap => FormatIdentityLdap(user),
_ => user.Name,
};
}
@@ -59,7 +59,7 @@ private static string FormatIdentityAD(LdapIdentity user, string ldapUri)
return user.Name;
}
- private string FormatIdentityLdap(LdapIdentity user, string ldapUri)
+ private string FormatIdentityLdap(LdapIdentity user)
{
if (user.Type == IdentityType.UserPrincipalName)
{
diff --git a/src/libs/LdapForNet.dll b/src/libs/LdapForNet.dll
new file mode 100644
index 0000000..2b1e07d
Binary files /dev/null and b/src/libs/LdapForNet.dll differ
diff --git a/src/multifactor-radius-adapter.sln b/src/multifactor-radius-adapter.sln
index 5c2c660..8b6a2a2 100644
--- a/src/multifactor-radius-adapter.sln
+++ b/src/multifactor-radius-adapter.sln
@@ -5,10 +5,10 @@ VisualStudioVersion = 17.4.33103.184
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1FDA0815-14C7-4C4A-B632-52BFF4AF7788}"
ProjectSection(SolutionItems) = preProject
- LICENSE.md = LICENSE.md
- LICENSE.ru.md = LICENSE.ru.md
- README.md = README.md
- README.ru.md = README.ru.md
+ ..\LICENSE.md = ..\LICENSE.md
+ ..\LICENSE.ru.md = ..\LICENSE.ru.md
+ ..\README.md = ..\README.md
+ ..\README.ru.md = ..\README.ru.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MultiFactor.Radius.Adapter.Tests", "MultiFactor.Radius.Adapter.Tests\MultiFactor.Radius.Adapter.Tests.csproj", "{E8A7518C-A622-4343-A594-46EE5869EE96}"