В моем бэкэнде asp net core я использую проверку подлинности Windows для защиты некоторых конечных точек. В моем Programm.cs я добавляю аутентификацию/авторизацию следующим образом:
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("SoftwarePolicy", policy =>
{
policy.RequireRole(@"Mygroup");
});
});
Это прекрасно работает в браузере, а также работает при использовании вкладки приватного просмотра (затем открывается окно, и мне сначала нужно войти в систему, чтобы получить доступ к конечной точке)
Теперь вернемся к моей проблеме: Я хочу предоставить доступ к своему бэкэнду другому разработчику, поэтому я создал туннель для разработки.
Я настроил это так: Тип туннеля: Постоянный Доступ: Публичный
Теперь, если я хочу получить доступ к API с помощью туннеля разработки, открывается окно входа в систему, затем я вхожу в систему с той же информацией, что и всегда, но теперь всегда написано «Несанкционировано» или «Запрещено».
Доступ к конечным точкам без аутентификации работает нормально.
Я пробовал разные политики e. г. RequireUserName с моим именем пользователя, но у меня все еще нет доступа
другой разработчик находится в том же домене AD, что и я, и я попробовал полное имя пользователя. Вы правы, я думаю, это странно, что он всегда открывает окно входа в систему и не использует вошедшего в систему пользователя (как это должно быть позже в рабочей среде). Я пришел к выводу, что туннель разработки должен что-то с этим делать, но я я не эксперт
Похоже, что, возможно, у вас нет прямой видимости контроллера домена (или это имя пользователя AzureAD или Entra?) или, может быть, вы на самом деле не вошли в систему на своем компьютере с пользователем домена.
я почти уверен, что вошел в систему под пользователем домена и использую аутентификацию, как здесь: Learn.microsoft.com/en-us/aspnet/core/security/authenticationn/…
Привет, Лукас! Я изучила проблему и поделюсь выводами ниже. Вы также можете проверить результат моего теста в этой теме.
@LukasSchneglberger it always opens the login window
это вопрос настроек браузера. Если в браузере не настроен автоматический вход в систему или сайт отсутствует в списке доверенных сайтов, он запросит учетные данные. На странице Security
апплета Internet Options
центра управления только сайты Local Intranet
и Trusted Sites
будут автоматически входить в систему.
Инструменты проникновения во внутреннюю сеть, такие как Devtunnel
(или Ngrok
), не поддерживают аутентификацию Windows.
Проверив URL-адрес, созданный DevTunnel (например, https://23***k-7189.euw.devtunnels.ms/), с помощью команды nslookup, мы обнаружим, что IP 168.63.129.16 используется.
Тогда приложение с включенной аутентификацией Windows всегда будет аутентифицироваться с помощью 168.63.129.16
после проникновения в интрасеть, поэтому его нельзя будет использовать.
Подключена ли машина другого разработчика к тому же домену AD, что и ваша машина? Вы используете полное имя пользователя, например
[email protected]
? В идеале для проверки подлинности Windows будет использоваться уже вошедший в систему пользователь, а не указанные имя пользователя и пароль.