Создание аутентификации ASP.NET Core с Logto
Узнайте, как создать поток аутентификации пользователя с ASP.NET Core, интегрировав SDK от Logto.
Введение
- Logto - это современная альтернатива Auth0 для создания инфраструктуры идентификации клиентов с минимальными усилиями. Он поддерживает различные методы входа в систему, включая имя пользователя, электронную почту, номер телефона и популярные социальные входы, такие как Google и GitHub.
- ASP.NET Core - это кросс-платформенный, высокопроизводительный, открытый фреймворк для создания современных, облачных, подключенных к Интернету приложений.
В этом руководстве мы покажем вам, как создать поток аутентификации пользователя с ASP.NET Core, интегрировав SDK от Logto. В руководстве используется C# в качестве языка программирования.
Предварительные требования
Перед началом убедитесь, что у вас есть следующее:
- Учетная запись Logto. Если у вас ее нет, вы можете зарегистрироваться бесплатно.
- Среда разработки .NET и проект ASP.NET Core. Если у вас их нет, вы можете установить .NET и следовать руководствам по ASP.NET для настройки вашего проекта.
Создание приложения Logto
Для начала создайте приложение Logto типа "Традиционный веб". Следуйте этим шагам для создания приложения Logto:
- Войдите в консоль Logto.
- В левой панели навигации нажмите на Приложения.
- Нажмите на Создать приложение.
- На открывшейся странице найдите раздел "Традиционное веб-приложение" и найдите карту "ASP.NET Core".
- Нажмите на Начать создание и введите имя вашего приложения.
- Нажмите на Создать.
Затем вы должны увидеть интерактивное руководство, которое направляет вас по процессу интеграции SDK Logto с вашим приложением ASP.NET Core. Следующее содержание может быть ссылкой для будущего использования.
Интеграция с SDK Logto
Установка
Обратите внимание, что минимальная поддерживаемая версия ASP.NET Core - 6.0
.
Добавление промежуточного программного обеспечения аутентификации Logto
Откройте Startup.cs
(или Program.cs
) и добавьте следующий код для регистрации промежуточного программного обеспечения аутентификации Logto:
Метод AddLogtoAuthentication
будет делать следующее:
- Устанавливает схему аутентификации по умолчанию на
LogtoDefaults.CookieScheme
. - Устанавливает схему вызова аутентификации по умолчанию на
LogtoDefaults.AuthenticationScheme
. - Устанавливает схему выхода по умолчанию на
LogtoDefaults.AuthenticationScheme
. - Добавляет обработчики аутентификации cookie и OpenID Connect к схеме аутентификации.
Вход в систему
Добавьте следующий URI в список Redirect URIs
на странице сведений о приложении Logto:
Чтобы войти с Logto, вы можете использовать метод ChallengeAsync
:
Метод ChallengeAsync
перенаправит пользователя на страницу входа в систему Logto.
Свойство RedirectUri
используется для перенаправления пользователя обратно в ваше веб-приложение после аутентификации. Обратите внимание, что это отличается от URI-адреса перенаправления, который вы настроили на странице деталей приложения Logto:
- URI-адрес перенаправления на странице деталей приложения Logto - это URI-адрес, на который Logto перенаправит пользователя после входа в систему.
- Свойство
RedirectUri
- это URI, на который будет выполнено перенаправление после выполнения необходимых действий в промежуточном программном обеспечении аутентификации Logto.
Порядок действий - 1 -> 2. Для ясности давайте назов ем URI перенаправления на странице деталей приложения Logto URI перенаправления Logto и свойство RedirectUri
- URI перенаправления приложения.
URI перенаправления Logto имеет значение по умолчанию /Callback
, которое вы можете оставить, если нет особых требований. Если вы хотите его изменить, вы можете установить свойство CallbackPath
для LogtoOptions
:
Не забудьте обновить значение на странице сведений о приложении Logto соответствующим образом.
Выход из системы
Добавьте следующий URI в список Post sign-out redirect URIs
на странице сведений о приложении Logto:
Чтобы выйти с Logto, вы можете использовать метод SignOutAsync
:
Метод SignOutAsync
очистит аутентификационный cookie и перенаправит пользователя на страницу выхода из Logto.
Свойство RedirectUri
используется для перенаправления пользователя обратно в ваше веб-приложение после выхода из системы. Обратите внимание, что это отличается от URI перенаправления после выхода, который вы настроили на странице деталей приложения Logto:
- URI перенаправления после выхода на странице деталей приложения Logto - это URI-адрес, на который Logto перенаправит пользователя после выхода из системы.
- Свойство
RedirectUri
- это URI, на который будет выполнено перенаправление после выполнения необходимых действий в промежуточном программном обеспечении аутентификации Logto.
Порядок действий - 1 -> 2. Для ясности давайте назовемURI перенаправления после выхода на странице деталей приложения Logto ** URI перенаправления после выхода из Logto **, а свойство RedirectUri
- ** URI перенаправления приложения после выхода из системы **.
** URI перенаправления после выхода из Logto ** имеет значение по умолчанию /SignedOutCallback
, который вы можете оставить, если нет особых требований. Если вы хотите его изменить, вы можете установить свойство SignedOutCallbackPath
для LogtoOptions
:
Не забудьте обновить значение на странице сведений о приложении Logto соответствующим образом.
Реализация кнопок входа / выхода (Razor Pages)
Во-первых, добавьте методы обработчика в ваш PageModel
, например:
Затем добавьте кнопки на вашей странице Razor (html):
<p>Аутентифицирован: @User.Identity?.IsAuthenticated</p>
<form method="post">
@if (User.Identity?.IsAuthenticated == true)
{
<button type="submit" asp-page-handler="SignOut">Выйти</button>
} else {
<button type="submit" asp-page-handler="SignIn">Войти</button>
}
</form>
Он покажет кнопку "Войти", если пользователь не аутентифицирован, и покажет кнопку "Выйти", если пользователь аутентифицирован.
Контрольная точка: Запустите веб-приложение
Теперь вы можете запустить веб-приложение и попробовать войти / выйти с Logto:
- Откройте веб-приложение в вашем браузере, вы должны увидеть "Аутентифицирован: False" и кнопку "Войти".
- Нажмите кнопку "Войти", и вы должны быть перенаправлены на страницу входа в Logto.
- После того как вы вошли в систему, вы должны быть перенаправлены обратно в веб-приложение, и вы должны увидеть "Аутентифицирован: True" и кнопку "Выйти".
- Нажмите кнопку "Выйти", и вы должны быть перенаправлены на страницу выхода из Logto, а затем перенаправлены обратно в веб-приложение.
Если вы столкнулись с какими-либо проблемами во время интеграции, пожалуйста, не стесняйтесь связаться с нами по электронной почте по адресу [email protected] или присоединиться к нашему серверу Discord!