Создать файл cookie аутентификации для другого веб-сайта (через аутентификацию Windows).C#

Место общения программистов C#
Ответить
Anonymous
 Создать файл cookie аутентификации для другого веб-сайта (через аутентификацию Windows).

Сообщение Anonymous »

Я использую ASP.net core 8 (после выпуска будет обновлен до 9).
У меня есть 2 веб-сайта, доступ к первому осуществляется внутри корпоративной сети с использованием проверки подлинности Windows.
Другая копия того же сайта находится на внешнем веб-сервере и использует аутентификацию с помощью файлов cookie.
Одна из ключевых проблем заключается в том, что при изменении веб-сайта я требуется опубликовать код в двух местах (один и тот же код, только разные файлы AppSettings.Production.json)
Я пытаюсь добиться того, чтобы вместо двух копий одного и того же веб-сайта работали два разные схемы аутентификации, вместо этого у меня есть только одна копия, которая использует cookie, но у меня есть другой веб-сайт с аутентификацией Windows, которая автоматически создает cookie для основного сайта на основе текущего пользователя.
Это позволяет пользователю войти в систему с использованием набора файлов cookie через стандартную страницу входа (внешняя сеть) или через другой веб-сайт с использованием аутентификации Windows (внутренний доступ).
Чтобы попробовать и заархивируйте это. Я создал тестовое решение, содержащее 2 веб-сайта.
  • Asp.Net Core (MVC) с аутентификацией Windows
  • Страница Asp.net Razor (с использованием опции аутентификации отдельных учетных записей)
На сайте Windows Auth я добавил следующий код в Program.cs

Код: Выделить всё

builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)

.AddCookie("CookieAuthenticationScheme") // New ************

.AddNegotiate();
и

Код: Выделить всё

builder.Services.AddDataProtection() // New (Added before var app = builder.Build())
.PersistKeysToFileSystem(new DirectoryInfo(@"c:\KeyLocation"))
.SetApplicationName("SharedCookieApp");

builder.Services.ConfigureApplicationCookie(options => {
options.Cookie.Name = ".AspNet.SharedCookie";
});

Затем в Home/Index я добавил

Код: Выделить всё

public class HomeController : Controller
{
public async Task Index()
{
var c = HttpContext;
var userName = c.User.Identity?.Name;
if (userName != null)
{
userName = "TestUser@test.com"; // Name match's user created in asp.net identity on other site
IEnumerable claims = [new(ClaimTypes.Name, userName)];
await c.SignInAsync("CookieAuthenticationScheme", new ClaimsPrincipal(new ClaimsIdentity(claims, "CookieAuthenticationScheme")));
}

var Referer = Redirect("https://localhost:7207");
return Referer;
}
Затем на главном веб-сайте с помощью файлов cookie я добавил следующее в Program.cs

Код: Выделить всё

builder.Services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"c:\KeyLocation"))
.SetApplicationName("SharedCookieApp");

builder.Services.ConfigureApplicationCookie(options => {
options.Cookie.Name = ".AspNet.SharedCookie";
});
Однако файл cookie, созданный на сайте Windows Auth, не позволяет войти на основной веб-сайт
Будем признательны за любую помощь

Подробнее здесь: https://stackoverflow.com/questions/790 ... entication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»