Самостійний сайт на основі HttpListener - як керувати автентифікацією?

Якщо ви будуєте власну веб-сторінку навколо HttpListener , як можна безпечно здійснювати автентифікацію? Я не хочу використовувати базову автентифікацію, оскільки він передає вхідні дані як чіткий текст. Я знаю, що дайджест є ще одним варіантом,

        listener = new HttpListener();
        listener.Prefixes.Add(url);
        listener.AuthenticationSchemes = AuthenticationSchemes.Digest; 
        listener.Start();

Чи це достатньо безпечно, і які стандартні/найкращі практики для фактичного захоплення імені користувача/пароля та аутентифікації?

У цій ситуації за замовчуванням немає веб-конфігурації або хостингового середовища.

4
Я працюю над сильним веб-додатком, керованим подіями та в режимі реального часу (уявіть сервер чату, але з більшою функціональністю), використовуючи реактивні розширення та цикл подій (наприклад, як працює вузол .js.js). Може, я певним чином інтегрую його в IIS, але зараз це просто голий проект. Що стосується використання SSL, який можна налаштовувати за допомогою HttpListener, а як щодо обробки вказівок користувача?
додано Автор Sean Thoman, джерело
Я не хочу використовувати базову автентифікацію, оскільки він передає в обліковий запис явний текст . Це не проблема, якщо ви використовуєте https
додано Автор L.B, джерело
Найкращим досвідом буде використання HTTPS/SSL. Ви уникаєте IIS і створюєте свій власний веб-сервер як компонент? Чи можу я запитати чому тільки для curiositi? :)
додано Автор Davide Piras, джерело
Легко уявити собі, чому, однак: додаток, що не потребує IIS, як приклад WinForms, може відкрити веб-інтерфейс, так що ви можете отримати доступ до програми за допомогою веб-браузера.
додано Автор Miguel Angelo, джерело

2 Відповіді

Використання автентифікації за допомогою HttpListener означає, що Windows виконує вашу автентифікацію за допомогою вбудованої системи автентифікації (наприклад, ActiveDirectory). Це означає, що для аутентифікації дайджесту вам потрібно створити облікові записи для домену для ваших користувачів. Це те, що ви мали намір? Якщо ви хочете зробити свою власну автентифікацію, це складніше. Я не буду вдаватися, як це зробити, якщо ви не скажете, що це те, що ви хочете зробити.

2
додано
Дякую. Я маю намір використовувати дайджест, швидше за все, принаймні на даний момент. Я був просто стурбований, чи достатньо безпечно. Чи знаєте ви будь-які посилання, які пояснюють, як використовувати аутентифікацію Digest + активний каталог? Або ж переварити робити це з коробки?
додано Автор Sean Thoman, джерело
З коробки. Що грубувато, якщо ви встановите HttpListener і не дозволяєте анонімну автентифікацію, HttpListener поверне 401 для неаутентифікованих користувачів, а заголовки запустити протокол автентифікації. Браузер потім відкриє діалогове вікно журналу. Користувач вводить облікові дані. Сервер спробує автентифікувати користувача за допомогою ActiveDirectory. Враховані дані повинні бути дійсними, і обліковий запис буде потрібно, незалежно від того, які дозволи потрібно зареєструватися за цим способом (я не пам'ятаю, з якою відповіддю потрібні дозволи, але де-небудь документовано).
додано Автор Matthew Kane, джерело
Ваш код не бачить запиту взагалі, доки користувач не буде автентифіковано.
додано Автор Matthew Kane, джерело

Я хотів би розглянути можливість підтримки підтримки вимог. Вам доведеться звертатися до токенів безпеки, але справжня автентифікація користувача може бути передана зовнішнім постачальникам послуг ідентифікації.

Ви, ймовірно, зможете використати Windows Identity Foundation (WIF) для обробки більшої частини роботи.

1
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug