From f5d540728e5f707cd3e2e5d37ab35b1c6591c390 Mon Sep 17 00:00:00 2001 From: Tal Aloni Date: Fri, 10 Mar 2017 20:26:54 +0200 Subject: [PATCH] Independent / Integrated NTLMAuthenticationProvider: GetContextAttribute can now return DomainName --- SMBLibrary/Authentication/GSSAPI/Enums/GSSAttributeName.cs | 1 + .../NTLM/IndependentNTLMAuthenticationProvider.cs | 6 +++++- SMBLibrary/Win32/IntegratedNTLMAuthenticationProvider.cs | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/SMBLibrary/Authentication/GSSAPI/Enums/GSSAttributeName.cs b/SMBLibrary/Authentication/GSSAPI/Enums/GSSAttributeName.cs index 4c476b3..b9eb720 100644 --- a/SMBLibrary/Authentication/GSSAPI/Enums/GSSAttributeName.cs +++ b/SMBLibrary/Authentication/GSSAPI/Enums/GSSAttributeName.cs @@ -5,6 +5,7 @@ namespace SMBLibrary.Authentication.GSSAPI public enum GSSAttributeName { AccessToken, + DomainName, IsAnonymous, /// diff --git a/SMBLibrary/Authentication/NTLM/IndependentNTLMAuthenticationProvider.cs b/SMBLibrary/Authentication/NTLM/IndependentNTLMAuthenticationProvider.cs index e505b65..a9dc129 100644 --- a/SMBLibrary/Authentication/NTLM/IndependentNTLMAuthenticationProvider.cs +++ b/SMBLibrary/Authentication/NTLM/IndependentNTLMAuthenticationProvider.cs @@ -18,9 +18,10 @@ namespace SMBLibrary.Authentication.NTLM { public class AuthContext { - public string WorkStation; public byte[] ServerChallenge; + public string DomainName; public string UserName; + public string WorkStation; public byte[] SessionKey; public bool IsGuest; @@ -130,6 +131,7 @@ namespace SMBLibrary.Authentication.NTLM return NTStatus.SEC_E_INVALID_TOKEN; } + authContext.DomainName = message.DomainName; authContext.UserName = message.UserName; authContext.WorkStation = message.WorkStation; if ((message.NegotiateFlags & NegotiateFlags.Anonymous) > 0) @@ -236,6 +238,8 @@ namespace SMBLibrary.Authentication.NTLM { switch (attributeName) { + case GSSAttributeName.DomainName: + return authContext.DomainName; case GSSAttributeName.IsGuest: return authContext.IsGuest; case GSSAttributeName.MachineName: diff --git a/SMBLibrary/Win32/IntegratedNTLMAuthenticationProvider.cs b/SMBLibrary/Win32/IntegratedNTLMAuthenticationProvider.cs index 192eb3a..f406932 100644 --- a/SMBLibrary/Win32/IntegratedNTLMAuthenticationProvider.cs +++ b/SMBLibrary/Win32/IntegratedNTLMAuthenticationProvider.cs @@ -21,8 +21,9 @@ namespace SMBLibrary.Win32.Security public class AuthContext { public SecHandle ServerContext; - public string WorkStation; + public string DomainName; public string UserName; + public string WorkStation; public bool IsGuest; public AuthContext(SecHandle serverContext) @@ -71,6 +72,7 @@ namespace SMBLibrary.Win32.Security return NTStatus.SEC_E_INVALID_TOKEN; } + authContext.DomainName = message.DomainName; authContext.UserName = message.UserName; authContext.WorkStation = message.WorkStation; if ((message.NegotiateFlags & NegotiateFlags.Anonymous) > 0 || @@ -152,6 +154,8 @@ namespace SMBLibrary.Win32.Security { case GSSAttributeName.AccessToken: return SSPIHelper.GetAccessToken(authContext.ServerContext); + case GSSAttributeName.DomainName: + return authContext.DomainName; case GSSAttributeName.IsGuest: return authContext.IsGuest; case GSSAttributeName.MachineName: