Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
От Валерия Новицки, Рика Андерсона и Шарафа Абесерри
В этом руководстве показано, как разрешить пользователям входить в систему с использованием учетных записей Google, используя пример проекта ASP.NET Core, созданного с помощью внешних поставщиков авторизации в Identity ASP.NET Core. Следуйте официальным инструкциям Google войдите в Google для Интернета: настройка для создания идентификатора клиента API Google.
Создание приложения в Google
- Перейдите на страницу API Google и служб платформы Google Cloud.
- Если проект не существует, создайте проект, нажав кнопку "Создать проект". Чтобы выбрать проект, отличный от существующего проекта, который загружается, нажмите кнопку загруженного проекта в левом верхнем углу пользовательского интерфейса, а затем проект. Чтобы добавить новый проект, нажмите кнопку загруженного проекта в левом верхнем углу пользовательского интерфейса, а затем кнопку "Создать проект ".
- При создании проекта:
- Заполните поле Имя проекта.
- При необходимости выберите организацию для проекта.
- Выберите кнопку Создать.
После создания проекта страница панели мониторинга проекта загружается, где можно настроить проект.
Откройте вкладку "Учетные данные" , чтобы создать клиент OAuth.
Предварительным условием для создания учетных данных является настройка экрана согласия OAuth. Если согласие не настроено, появится запрос на настройку экрана согласия.
- Выберите экран "Настройка согласия" или выберите экран согласия OAuth на боковой панели.
- На экране согласия OAuth выберите "Начать работу".
- Задайте имя приложения и электронную почту поддержки пользователей.
- Установите тип аудитории на External.
- Добавьте контактные данные , введя адрес электронной почты контакта.
- Примите условия.
- Нажмите кнопку "Создать".
Создайте учетные данные клиента для приложения, открыв элемент меню боковой панели клиентов :
- Нажмите кнопку "Создать клиент ".
- Выберите веб-приложение в качестве типа приложения.
- Введите имя клиента.
- Добавьте URI авторизованного перенаправления. Для локального тестирования используйте адрес
https://localhost:{PORT}/signin-google
по умолчанию, где{PORT}
обозначает порт приложения. - Нажмите кнопку "Создать ", чтобы создать клиент.
- Сохраните идентификатор клиента и секрет клиента, которые будут использоваться позже в конфигурации приложения ASP.NET.
Замечание
Сегмент URI /signin-google
устанавливается как стандартный обратный вызов поставщика аутентификации Google. Можно изменить URI обратного вызова по умолчанию при настройке Google-аутентификации через унаследованное свойство RemoteAuthenticationOptions.CallbackPath класса GoogleOptions.
При развертывании приложения либо:
- Обновите URI перенаправления приложения в Консоли Google на URI перенаправления, развернутого приложения.
- Создайте новую регистрацию API Google в Google Console для продуктового приложения с URI перенаправления в рабочей версии.
Хранение идентификатора и секрета клиента Google
Сохраните конфиденциальные параметры, такие как идентификатор клиента Google и значения секретов, используя диспетчер секретов. Для этого примера выполните следующие действия.
Инициализировать проект для безопасного хранения секретов приложения в соответствии с инструкциями в Safe storage of app secrets in development in ASP.NET Core.
Сохраните конфиденциальные параметры в локальном хранилище секретов с помощью ключей
Authentication:Google:ClientId
секрета (значение:{CLIENT ID}
заполнитель) иAuthentication:Google:ClientSecret
(значение:{CLIENT SECRET}
заполнитель):dotnet user-secrets set "Authentication:Google:ClientId" "{CLIENT ID}" dotnet user-secrets set "Authentication:Google:ClientSecret" "{CLIENT SECRET}"
Разделитель :
не работает с иерархическими ключами переменной среды на всех платформах. Например, разделитель :
не поддерживается Bash. Двойный символ подчеркивания, __
, имеет следующие значения:
- Поддерживается всеми платформами.
- Автоматически заменяется двоеточием,
:
.
Управление учетными данными и использованием API в консоли API.
Настройка проверки подлинности Google
Добавьте службу проверки подлинности в Program
файл:
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});
Добавьте службу проверки подлинности в Startup.ConfigureServices
.
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});
Перегрузка AddAuthentication(IServiceCollection, String) задает свойство DefaultScheme. Перегрузка AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) позволяет настраивать параметры проверки подлинности, которые можно использовать для установки схем аутентификации по умолчанию в зависимости от различных целей. Последующие вызовы AddAuthentication
переопределяют ранее настроенные свойства AuthenticationOptions.
AuthenticationBuilder методы расширения, которые регистрируют обработчик проверки подлинности, могут вызываться только один раз для каждой схемы проверки подлинности. Существуют перегруженные методы, позволяющие настраивать свойства схемы, имя схемы и отображаемое имя.
Вход с помощью Google
- Запустите приложение и выберите Вход.
- В разделе "Использовать другую службу для входа" выберите Google.
- Браузер перенаправляется в Google для проверки подлинности.
- Выберите учетную запись Google, чтобы войти в систему или ввести учетные данные Google.
- Если это первый вход, появится запрос на предоставление приложению доступа к данным учетной записи Google.
- Браузер перенаправляется обратно в приложение, где можно задать сообщение электронной почты.
Теперь пользователь вошел с помощью учетных данных Google.
Устранение неполадок
- Если вход не работает без получения ошибок, переключитесь в режим разработки, чтобы упростить отладку приложения и регистрации Google.
- Если база данных сайта не создана путем применения начальной миграции, возникает следующая ошибка: операция базы данных завершилась сбоем при обработке запроса. Выберите "Применить миграции", чтобы создать базу данных, затем обновите страницу, чтобы продолжить после ошибки.
- Сведения об ошибке HTTP 500 после успешной проверки подлинности запроса поставщиком OAuth 2.0, например Google, и сведения о том, как реализовать внешнюю проверку подлинности с помощью Google для React и других приложений SPA, см. в разделе ПО промежуточного слоя, не обрабатывающего маршрут "signin-google" после успешной проверки подлинности в Asp.Net Core Web Api External Login Authentication (
dotnet/AspNetCore.Docs
No 14169).
Дальнейшие действия
- В этой статье демонстрируется проверка подлинности с помощью Google. Сведения об аутентификации с другими внешними поставщиками см. в разделе "Использование внешних поставщиков для входа в IdentityASP.NET Core".
- После развертывания приложения в Azure выполните сброс
ClientSecret
в консоли API Google. - Установите
Authentication:Google:ClientId
иAuthentication:Google:ClientSecret
в качестве параметров приложения на портале Azure. Система конфигурации настраивается для чтения ключей из переменных среды.
Дополнительные ресурсы
ASP.NET Core