У меня есть веб-приложение с интерфейсом HTML 5, которое вызывает (через Ajax и JSON) веб-приложение .NET MVC.Цель состоит в том, чтобы позволить пользователям домена автоматически проходить проверку подлинности в Active Directory и выдавать себя за пользователя, чтобы при доступе IIS к сетевым ресурсам в контексте этого пользователя.Код, который я сейчас использую, основан на следующем: Олицетворение с использованием проверки подлинности с помощью форм .Тем не менее, я часто получаю «Неверный токен для олицетворения - его нельзя дублировать».
Иерархия веб-сайта:
Default Web Server
\-Links_Test <- This contains the HTML, JavaScript and CSS
\-data <- This is where the C# code runs
Я пытался включить олицетворение ASP.NET ви корневой уровень (Links_Test), и узел, который содержит код MVC (Links_Test> Данные), и все, что происходит, - это то, что браузер выполняет (казалось бы) бесконечный цикл, запрашивая имя пользователя / пароль.Я смотрел на переполнение стека и пробовал поискать в Google, но результаты не относятся к устаревшим ресурсам и не указывают на них.
Другая важная информация:
- Разработка сайта в Windows 10 Pro с IIS 10
- Использование .NET 4.7.2
- Аутентификация пользователей в Active Directory
Моя цель - перенести этот сайт на надлежащий сервер и сделать так, чтобы IIS выдавал себя за пользователячто любые действия выполняются в контексте пользователя.
ОБНОВЛЕНИЕ
Это сообщение об ошибке, которое я получаю:
Invalid token for impersonation - it cannot be duplicated.
at System.Security.Principal.WindowsIdentity.CreateFromToken(IntPtr userToken)
at System.Security.Principal.WindowsIdentity..ctor(SerializationInfo info)
at System.Security.Principal.WindowsIdentity..ctor(SerializationInfo info, StreamingContext context)
at Void .ctor(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)(Object[] )
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializable(JsonReader reader, JsonISerializableContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at TFS.Key2.API.Data_Encryption.EncryptedBuffer.DecryptData[T]() in C:\Source\repos\TFS.Key2.WebSite\TFS.Key2.API.Types\Data Encryption\EncryptedBuffer.cs:line 48
at TFS.Key2.API.Helpers.HttpCookieHelper.GetEncryptedValue[T](HttpCookie Cookie) in C:\Source\repos\TFS.Key2.WebSite\TFS.Key2.API.Types\Helpers\HttpCookieHelper.cs:line 34
at TFS.Key2.WebSite.WebApiApplication.Application_PreRequestHandlerExecute(Object Sender, EventArgs E) in C:\Source\repos\TFS.Key2.WebSite\TFS.Key2.WebSite\Global.asax.cs:line 130
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)