Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Авторы: Валерий Новицкий (Valeriy Novytskyy) и Рик Андерсон (Rick Anderson)
В этом руководстве по примерам кода показано, как разрешить пользователям входить с помощью учетной записи Facebook с помощью примера проекта ASP.NET Core, созданного на предыдущей странице. Сначала создадим идентификатор приложения Facebook, выполнив официальные действия.
Создание приложения в Facebook
Добавьте в проект пакет NuGet Microsoft.AspNetCore.Authentication.Facebook .
Перейдите на страницу приложения "Разработчики Facebook" и войдите в систему. Если у вас еще нет учетной записи Facebook, используйте ссылку "Регистрация для Facebook " на странице входа, чтобы создать ее. После того как у вас есть учетная запись Facebook, следуйте инструкциям для регистрации в качестве разработчика Facebook.
В меню "Мои приложения" выберите "Создать приложение". Появится форма создания приложения .
Выберите тип приложения, который лучше всего подходит для проекта. Для этого проекта выберите "Потребитель" и " Далее". Создается новый идентификатор приложения.
Заполните форму и нажмите кнопку "Создать приложение ".
На странице "Добавление продуктов в приложение" выберите "Настроить" на карточке Facebook Login.
Мастер быстрого запуска запускается с выбором платформы в качестве первой страницы. Обойдите мастер, щелкнув на ссылку Вход в FaceBookНастройки в меню в нижнем левом углу.
Откроется страница параметров OAuth клиента :
Введите свой URI разработки, добавив /signin-facebook в поле допустимых URI перенаправления OAuth (например:
https://localhost:44320/signin-facebook
). Проверка подлинности Facebook, настроенная далее в этом руководстве, автоматически обрабатывает запросы по маршруту /signin-facebook для реализации потока OAuth.
Замечание
URI /signin-facebook задается как обратный вызов по умолчанию поставщика проверки подлинности Facebook. Вы можете изменить URI обратного вызова по умолчанию при настройке аутентификационного промежуточного слоя Facebook через унаследованное свойство RemoteAuthenticationOptions.CallbackPath класса FacebookOptions.
Выберите Сохранить изменения.
Выберите ссылку Настройки>Базовый в левой панели навигации.
Запишите ваше
App ID
и вашеApp Secret
. Вы добавите оба элемента в свое приложение ASP.NET Core в следующем разделе:При развертывании сайта необходимо вернуться на страницу настройки входа Facebook и зарегистрировать новый общедоступный универсальный код ресурса (URI).
Сохранение идентификатора и секрета приложения Facebook
Сохраните конфиденциальные параметры, такие как идентификатор приложения Facebook и значения секретов с помощью диспетчера секретов. В этом примере выполните следующие действия.
Инициализируйте проект для хранения секретов согласно инструкциям по включению хранилища секретов.
Сохраните конфиденциальные параметры в локальном хранилище секретов с помощью ключей секретов
Authentication:Facebook:AppId
иAuthentication:Facebook:AppSecret
:dotnet user-secrets set "Authentication:Facebook:AppId" "<app-id>" dotnet user-secrets set "Authentication:Facebook:AppSecret" "<app-secret>"
Разделитель :
не работает с иерархическими ключами переменной среды на всех платформах. Например, разделитель :
не поддерживается Bash. Двойный символ подчеркивания, __
, имеет следующие значения:
- Поддерживается всеми платформами.
- Автоматически заменяется двоеточием,
:
.
Настройка проверки подлинности Facebook
Добавьте службу проверки подлинности в Startup.ConfigureServices
:
services.AddAuthentication().AddFacebook(facebookOptions =>
{
facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});
Добавьте службу проверки подлинности в Program
:
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;
services.AddAuthentication().AddFacebook(facebookOptions =>
{
facebookOptions.AppId = configuration["Authentication:Facebook:AppId"];
facebookOptions.AppSecret = configuration["Authentication:Facebook:AppSecret"];
});
Перегрузка AddAuthentication(IServiceCollection, String) задает свойство DefaultScheme. Перегрузка AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) позволяет настраивать параметры аутентификации, которые можно использовать для установки настроек аутентификации по умолчанию для различных целей. Последующие вызовы AddAuthentication
переопределяют ранее настроенные свойства AuthenticationOptions.
AuthenticationBuilder методы расширения, которые регистрируют обработчик проверки подлинности, могут вызываться только один раз для каждой схемы проверки подлинности. Существуют перегрузки, позволяющие настраивать свойства схемы, имя схемы и отображаемое имя.
Вход с помощью Facebook
- Запустите приложение и выберите Вход.
- В разделе "Использование другой службы для входа" выберите Facebook.
- Вы перенаправляетесь в Facebook для проверки подлинности.
- Введите учетные данные Facebook.
- Вы перенаправляетесь обратно на сайт, где можно задать электронную почту.
Теперь вы вошли в систему с помощью учетных данных Facebook:
Реагирование на отмену авторизации внешнего входа
AccessDeniedPath может предоставить путь перенаправления к агенту пользователя, если пользователь не утверждает запрошенный запрос авторизации.
Следующий код устанавливает AccessDeniedPath
на "/AccessDeniedPathInfo"
:
services.AddAuthentication().AddFacebook(options =>
{
options.AppId = Configuration["Authentication:Facebook:AppId"];
options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
options.AccessDeniedPath = "/AccessDeniedPathInfo";
});
Мы рекомендуем использовать страницу AccessDeniedPath
со следующими сведениями:
- Удаленная проверка подлинности была отменена.
- Для этого приложения требуется проверка подлинности.
- Чтобы повторить вход, выберите ссылку для входа.
Тестирование AccessDeniedPath
- Перейдите к facebook.com
- Если вы вошли в систему, необходимо выйти из нее.
- Запустите приложение и выберите вход в Facebook.
- Выберите "Не сейчас". Вы перенаправляетесь на указанную
AccessDeniedPath
страницу.
Переадресация сведений о запросе с помощью прокси-сервера или подсистемы балансировки нагрузки
Если приложение развертывается за прокси-сервером или подсистемой балансировки нагрузки, некоторые из исходных сведений о запросе могут быть переадресованы в приложение в заголовках запросов. Обычно эти сведения включают схему безопасного запроса (https
), узел и IP-адрес клиента. Приложения не считывают автоматически эти заголовки запроса, чтобы обнаружить и использовать информацию из исходного запроса.
Схема используется для создания ссылок, влияющих на поток аутентификации с помощью внешних поставщиков. Потеря безопасной схемы (https
) приводит к тому, что приложение генерирует неправильные небезопасные URL-адреса перенаправления.
Используйте Промежуточное ПО для пересылаемых заголовков, чтобы предоставить приложению первоначальную информацию о запросах для их обработки.
Для получения дополнительной информации см. Настройка ASP.NET Core для работы с прокси-серверами и балансировщиками нагрузки.
Для получения дополнительной информации о параметрах конфигурации, поддерживаемых аутентификацией Facebook, см. справочник FacebookOptions по API. Параметры конфигурации можно использовать для:
- Запросите различные сведения о пользователе.
- Добавьте аргументы строки запроса для настройки интерфейса входа.
Устранение неполадок
-
Только ASP.NET Core 2.x: Если Identity не настроен через вызов
services.AddIdentity
вConfigureServices
, попытка аутентификации завершится ошибкой ArgumentException: необходимо указать параметр "SignInScheme". Шаблон проекта, используемый в этом руководстве, гарантирует, что это сделано. - Если база данных сайта не была создана путем применения начальной миграции, при обработке запроса произошла ошибка : сбой операции базы данных. Коснитесь Применить миграцию, чтобы создать базу данных и обновить ее, чтобы продолжить выполнение ошибки.
Дальнейшие шаги
В этой статье показано, как выполнить проверку подлинности с помощью Facebook. Вы можете следовать аналогичному подходу для аутентификации с другими поставщиками, перечисленными на предыдущей странице.
После публикации веб-сайта в веб-приложении Azure необходимо сбросить
AppSecret
на портале Facebook для разработчиков.Задайте
Authentication:Facebook:AppId
иAuthentication:Facebook:AppSecret
в качестве параметров приложения на портале Azure. Система конфигурации настроена для чтения ключей из переменных среды.
Дополнительные ресурсы
ASP.NET Core