Проверка подлинности Facebook, Google и внешних поставщиков в ASP.NET Core

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

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

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

Позволяет пользователям входить в систему с имеющимися учетными данными:

  • Удобно для пользователей.
  • Многие задачи, связанные с управлением процессом входа, передаются сторонним производителям.

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

  • Создайте новый проект.
  • Выберите Веб-приложение ASP.NET Core и нажмите Далее.
  • Укажите Имя проекта и подтвердите либо измените Расположение. Выберите Создать.
  • Выберите последнюю версию ASP.NET Core в раскрывающемся списке (ASP.NET Core {X.Y} ), а затем выберите Веб-приложение.
  • В разделе Проверка подлинности выберите Изменить и в качестве типа проверки подлинности задайте Индивидуальные учетные записи пользователей. Нажмите кнопку ОК.
  • В окне Создать веб-приложение ASP.NET Core выберите Создать.

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

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

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

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

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

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

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

Хранение маркеров безопасности, предоставленных поставщиками входа, с помощью SecretManager

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

Важно!

Secret Manager предназначен только для разработки. Для хранения и защиты секретов Azure в ходе тестирования и непосредственной работы используйте Поставщик конфигурации Azure Key Vault.

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

Настройка поставщиков входа, используемых приложением

В следующих разделах приводятся инструкции по настройке приложения для работы с соответствующими поставщиками:

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

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

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

Необязательная установка пароля

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

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

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

Web application Manage view

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

Set your password page

  • Введите допустимый пароль, который будет использоваться для входа с применением этого адреса электронной почты.

Следующие шаги

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