AspNet Core 2.2 Аутентификация Windows - браузер продолжает запрашивать имя пользователя и пароль

Проверка подлинности окна включена, анонимность отключена. Когда пользователь заходит на сайт, я проверяю, является ли он пользователем сайта. Если это не так, я хочу обрабатывать их как Несанкционированные. Однако Chrome продолжает повторно запрашивать у них имя пользователя и пароль, а не отправлять их на страницу с ошибкой. У пользователя никогда не должно запрашиваться имя пользователя / пароль, потому что автоматическая проверка подлинности Windows включена, а анонимность отключена.

Контроллер:

public async Task<IActionResult> Login()
        {

            if (await IsValidUser())
            { 
                return RedirectToAction("Index");
            }
            else
            {
                return new UnauthorizedResult();
            }
        }

Запускать

app.UseStatusCodePages(async context =>
            {
                var response = context.HttpContext.Response;

                await context.HttpContext.Response.WriteAsync(
                    "Status code page, status code: " +
                    context.HttpContext.Response.StatusCode);

                response.Redirect("~/Account/AccessDenied");

            });

person Kevin D    schedule 13.03.2019    source источник
comment
Пожалуйста, поясните конкретно, в чем заключается ваш вопрос.   -  person Oxymoron    schedule 13.03.2019


Ответы (2)


Несмотря на то, что вы нацеливаетесь на Chrome, настройки безопасности в Интернете по-прежнему действуют. Похоже, что с вашим кодом нет проблем в отношении вашего вопроса (был ли вопрос, кстати?) Просмотрите эта ссылка и понимаем, что она не сообщает вам, какие могут быть последствия этого изменения. Это лучше подходит для SuperUser, а не для переполнения стека.

person Oxymoron    schedule 13.03.2019
comment
Извините. Мой вопрос заключался в том, как мне изящно отклонить пользователей интрасети, которые имеют доступ к этому сайту (может войти любой, у кого есть аутентификация Windows), но не авторизованы для его использования? Я проверю SuperUser, спасибо. - person Kevin D; 14.03.2019

Первый вопрос: аутентифицирован ли пользователь с помощью AD в основном приложении .net. Если не аутентифицирован (неправильные учетные данные), IMO подсказка - это поведение браузера, когда проверка подлинности окна включена, анонимная отключена, эта проверка подлинности выполняется веб-сервером до того, как код вашего приложения когда-либо будет достигнут, так что IIS позаботится об аутентификации перед запросом передается в ASP.NET, поэтому запрос никогда не достигнет страницы с ошибкой.

Обходной путь, возможно, заключается в использовании проверки подлинности с помощью форм с поставщиками членства в AD. Ниже приведены примеры кода, но я не проверял это:

Проверка подлинности ядра .net

Если пользователь аутентифицирован и вы хотите авторизоваться, вы можете щелкнуть здесь для примера кода и, конечно, вы можете перенаправить пользователя на страницу с ошибкой, если авторизация не удалась.

person Nan Yu    schedule 14.03.2019
comment
Мой вопрос / сообщение было непонятным. Но я должен был использовать претензии все время. Я использовал роли, но это добавляло ненужных накладных расходов. Все, что мне нужно было сделать, можно было сделать проще, назначив пользователям претензии. (Роли AD были недоступны в моей организации) - person Kevin D; 14.03.2019
comment
@KevinD, так что используйте роли, в чем проблема? - person Nan Yu; 15.03.2019