Поделиться через


Проверка подлинности внешнего поставщика в ASP.NET Core Identity

Авторы: Валерий Новицкий (Valeriy Novytskyy) и Рик Андерсон (Rick Anderson)

В этой статье объясняется, как создать приложение ASP.NET Core, позволяющее пользователям входить с помощью OAuth 2.0 с учетными данными от внешних поставщиков проверки подлинности.

В следующих разделах рассматриваются такие поставщики, как Facebook, Twitter, Google и Майкрософт, использующие созданный в рамках этой статьи начальный проект. Другие поставщики доступны в сторонних пакетах, таких как OpenIddict, AspNet.Security.OAuth.Providers и AspNet.Security.OpenId.Providers.

Предоставление пользователям возможности входа с помощью имеющихся учетных данных удобно для пользователей и переместит многие сложности управления процессом входа в стороннюю сторону.

Создание нового проекта ASP.NET Core

  • Выберите шаблон Веб-приложение ASP.NET Core. Нажмите ОК.
  • В поле входных данных Тип проверки подлинности выберите Индивидуальные учетные записи.

Применение миграции

  • Запустите приложение и щелкните ссылку Регистрация.
  • Введите адрес электронной почты и пароль для новой учетной записи, а затем щелкните Зарегистрироваться.
  • Следуйте инструкциям по применению миграций.

Переадресация сведений запроса с помощью прокси-сервера или подсистемы балансировки нагрузки

Если приложение развертывается с прокси-сервером или подсистемой балансировки нагрузки, некоторые сведения из исходного запроса можно перенаправить в приложение в заголовках запроса. Эти сведения обычно включают безопасную схему запроса (https), узел и IP-адрес клиента. Приложения не считывают автоматически эти заголовки запроса, чтобы обнаружить и использовать информацию из исходного запроса.

Схема используется для создания ссылок, влияющих на поток аутентификации с помощью внешних поставщиков. Потеря безопасной схемы (https) приводит к тому, что приложение неправильно выполняет перенаправление на небезопасные URL-адреса.

Используйте Промежуточное ПО для пересылаемых заголовков, чтобы предоставить приложению первоначальную информацию о запросах для их обработки.

Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Используйте Secret Manager для хранения токенов, назначенных провайдерами входа

Поставщики входа социальных сетей назначают токены идентификатор приложения и секрет приложения в ходе процесса регистрации. Точные имена токенов зависят от поставщика. Эти маркеры представляют учетные данные, которые приложение использует для доступа к API поставщика. Маркеры являются секретами пользователей, которые можно связать с конфигурацией приложения с помощью Менеджера секретов. Секреты пользователя — более безопасная альтернатива хранению маркеров в файле конфигурации, например в appsettings.json.

Внимание

Диспетчер секретов предназначен только для локальной разработки и тестирования. Защищайте промежуточные и производственные секреты при помощи поставщика конфигурации Azure Key Vault, который также можно использовать для локальной разработки и тестирования, если вы предпочитаете не использовать локально Диспетчер секретов.

Рекомендации по хранению маркеров, назначенных каждым поставщиком входа, см. в статье "Безопасное хранение секретов приложений в разработке в ASP.NET Core".

Настройка поставщиков входа

Используйте следующие статьи для настройки поставщиков входа и приложения:

Несколько поставщиков проверки подлинности

Если приложению требуется несколько поставщиков, выполните цепочку методов расширения поставщика в AddAuthenticationследующих случаях:

builder.Services.AddAuthentication()
    .AddGoogle(options =>
    {
        // Google configuration options
    })
    .AddFacebook(options =>
    {
        // Facebook configuration options
    })
    .AddMicrosoftAccount(options =>
    {
        // Microsoft Account configuration options
    })
    .AddTwitter(options =>
    {
        // Twitter configuration options
    });

Подробные рекомендации по настройке каждого поставщика см. в их соответствующих статьях.

При необходимости задайте пароль

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

Чтобы создать пароль и войти, используя электронную почту, заданную при входе с внешними поставщиками:

  • Щелкните ссылку Hello < псевдоним электронной почты> в верхнем углу справа, чтобы перейти к представлению Управление:

Управление видом веб-приложения

  • Нажмите кнопку Создать.

Настройте страницу пароля

  • Задайте допустимый пароль и вы можете использовать эти учетные данные для входа с помощью адреса электронной почты.

Дополнительная информация: