Веб-приложение, которое реализует вход пользователей: вход и выход

Узнайте, как добавить вход в код для веб-приложения, которое реализует вход пользователей. Затем узнайте, как разрешить выход.

Вход

Вход состоит из двух частей:

  • Кнопка входа на HTML-странице
  • Действие входа в коде программной части контроллера

Кнопка "Войти"

В ASP.NET Core для приложений платформы Microsoft Identity кнопка Вход реализуется в Views\Shared\_LoginPartial.cshtml (для приложения MVC) или Pages\Shared\_LoginPartial.cshtm (для приложения Razor). Он отображается только в том случае, если пользователь не прошел проверку подлинности. То есть он отображается, когда пользователь еще не вошел в приложение или выполнил выход из него. Напротив, кнопка Выйти отображается, когда пользователь уже вошел в систему. Обратите внимание, что контроллер учетной записи определен в пакете NuGet Microsoft.Identity.Web.UI в области с именем MicrosoftIdentity

<ul class="navbar-nav">
  @if (User.Identity.IsAuthenticated)
  {
    <li class="nav-item">
        <span class="navbar-text text-dark">Hello @User.Identity.Name!</span>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    </li>
  }
  else
  {
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
    </li>
  }
</ul>

Действие SignIn контроллера

В ASP.NET при нажатии кнопки Входа в веб-приложении будет инициировано действиеSignIn в контроллере AccountController. В предыдущих версиях шаблонов Account ASP.NET Core контроллер был внедрен в веб-приложение. Теперь контроллер входит в пакет NuGet Microsoft. Identity.Web.UI. Дополнительные сведения см. в разделе AccountController.cs.

Этот контроллер также обрабатывает приложения Azure AD B2C.

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

Функция выхода

Выход из веб-приложения требует больше, чем удаление сведений об аутентифицированной учетной записи из состояния веб-приложения. Веб-приложение должно также перенаправить пользователя на конечную точку logout платформы удостоверений Майкрософт для выхода.

Когда веб-приложение перенаправляет пользователя на конечную точкуlogout, эта конечная точка удаляет сеанс пользователя из браузера. Если приложение не перенаправило на конечную точку logout, пользователь сможет повторно войти в приложение, не вводя свои учетные данные. Причина заключается в том, что у них будет один действительный сеанс входа с платформой Microsoft Identity.

Дополнительные сведения см. в разделе Отправка запроса на выход в документации платформа Microsoft Identity и протокол OpenID Connect .

Регистрация приложения

Во время регистрации приложения вы регистрируете URL-адрес выхода для внешнего канала. В нашем руководстве вы зарегистрировались https://localhost:44321/signout-oidc в поле URL-адрес внешнего канала для выхода на странице Проверка подлинности . Дополнительные сведения см. в разделе Регистрация приложения webApp.

Кнопка выхода

В ASP.NET при нажатии кнопки Выход в веб-приложении будет инициировано действиеSignOut в контроллере AccountController (см.ниже).

<ul class="navbar-nav">
  @if (User.Identity.IsAuthenticated)
  {
    <li class="nav-item">
        <span class="navbar-text text-dark">Hello @User.Identity.Name!</span>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    </li>
  }
  else
  {
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
    </li>
  }
</ul>

Действие SignOut контроллера

В предыдущих версиях шаблонов Account ASP.NET Core контроллер был внедрен в веб-приложение. Теперь контроллер входит в пакет NuGet Microsoft. Identity.Web.UI. Дополнительные сведения см. в разделе AccountController.cs.

  • Задает URI /Account/SignedOut перенаправления OpenID таким образом, чтобы контроллер был вызван обратно, когда идентификатор Microsoft Entra завершил выход.

  • Вызывает Signout(), который позволяет промежуточному ПО OpenID Connect обращаться к конечной точке logout платформы идентификации Майкрософт. Затем конечная точка:

    • Удаляет файл cookie сеанса из браузера.
    • Вызывает URI перенаправления после выхода. По умолчанию URI перенаправления после выхода отображает страницу после выхода SignedOut.cshtml.cs. Эта страница также предоставляется как часть Microsoft.Identity.Web.

Перехват вызова конечной точки logout.

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

ПО промежуточного слоя ASP.NET Core OpenID Connect позволяет приложению перехватывать вызовы конечной точки платформы идентификации Майкрософт, logout предоставляя событие OpenID Connect с именем OnRedirectToIdentityProviderForSignOut . Это автоматически обрабатывается службой Microsoft.Identity.Web (которая очищает учетные записи в случае, когда веб-приложение вызывает веб-интерфейсы API)

Протокол

Если вы хотите узнать больше о выходе, ознакомьтесь с документацией по протоколу, доступной из OpenID Подключение.

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

  • Узнайте больше, создав веб-приложение ASP.NET Core, которое входит в систему пользователей в следующей серии учебников с несколькими частью

  • Изучение примеров веб-приложения платформа удостоверений Майкрософт