Aracılığıyla paylaş


Kullanıcılarda oturum açma web uygulaması: Oturum açma ve oturumu kapatma

Kullanıcıların oturum açtığı web uygulamanızın koduna nasıl oturum açacağınızı öğrenin. Ardından, oturumu kapatmalarına nasıl izin vereceğinizi öğrenin.

Oturum açma

Oturum açma iki bölümden oluşur:

  • HTML sayfasındaki oturum açma düğmesi
  • Denetleyicideki arka planda kodda oturum açma eylemi

Oturum açma düğmesi

ASP.NET Core'da, Microsoft kimlik platformu uygulamalar için Oturum aç düğmesi (Views\Shared\_LoginPartial.cshtmlMVC uygulaması için) veya Pages\Shared\_LoginPartial.cshtm (Razor uygulaması için) kullanıma sunulur. Yalnızca kullanıcının kimliği doğrulanmamışsa görüntülenir. Başka bir ifadeyle, kullanıcı henüz oturum açmadığında veya oturumu kapatmadığında görüntülenir. Tam tersine, kullanıcı zaten oturum açtığında Oturumu kapat düğmesi görüntülenir. Hesap denetleyicisinin Microsoft.Identity.Web.UI NuGet paketinde MicrosoftIdentity adlı Alanda tanımlandığını unutmayın

<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 denetleyicinin eylemi

ASP.NET'da, web uygulamasında Oturum aç düğmesinin seçilmesi denetleyicideki SignInAccountController eylemi tetikler. ASP.NET Core şablonlarının önceki sürümlerinde denetleyici Account web uygulamasıyla eklenmişti. Denetleyici artık Microsoft.Identity.Web.UI NuGet paketinin bir parçası olduğundan bu durum geçerli değildir. Ayrıntılar için bkz . AccountController.cs .

Bu denetleyici, Azure AD B2C uygulamalarını da işler.

Kullanıcı uygulamanızda oturum açtıktan sonra oturumu kapatmasını sağlamak istersiniz.

Oturumu kapatma

Bir web uygulamasında oturumu kapatma işlemi, oturum açmış hesap hakkındaki bilgilerin web uygulamasının durumundan kaldırılmasından daha fazlasını içerir. Web uygulamasının oturumu kapatmak için kullanıcıyı Microsoft kimlik platformu logout uç noktasına da yönlendirmesi gerekir.

Web uygulamanız kullanıcıyı logout uç noktaya yeniden yönlendirdiğinde, bu uç nokta kullanıcının oturumunu tarayıcıdan temizler. Uygulamanız uç noktaya gitmediyse logout , kullanıcı kimlik bilgilerini yeniden girmeden uygulamanıza yeniden kimlik doğrulaması gerçekleştirir. Bunun nedeni, Microsoft kimlik platformu ile geçerli bir çoklu oturum açma oturumuna sahip olmalarıdır.

Daha fazla bilgi edinmek için Microsoft kimlik platformu ve OpenID Connect protokolü belgelerindeki Oturum kapatma isteği gönderme bölümüne bakın.

Uygulama kaydı

Uygulama kaydı sırasında bir ön kanal oturumu kapatma URL'si kaydedersiniz. Öğreticimizde, Kimlik Doğrulaması sayfasındaki Ön kanal oturumu kapatma URL'sialanına kaydolusunuz https://localhost:44321/signout-oidc. Ayrıntılar için bkz . WebApp uygulamasını kaydetme.

Oturumu kapat düğmesi

ASP.NET'de, web uygulamasında Oturumu kapat düğmesinin seçilmesi denetleyicide AccountController eylemi tetikler SignOut (aşağıya bakın)

<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 denetleyicinin eylemi

ASP.NET Core şablonlarının önceki sürümlerinde denetleyici Account web uygulamasıyla eklenmişti. Denetleyici artık Microsoft.Identity.Web.UI NuGet paketinin bir parçası olduğundan bu durum geçerli değildir. Ayrıntılar için bkz . AccountController.cs .

  • Microsoft Entra Id oturum kapatma işlemini tamamladığında denetleyicinin geri çağrılması için /Account/SignedOut bir OpenID yeniden yönlendirme URI'si ayarlar.

  • ÇağrılarıSignout(), OpenID Connect ara yazılımının Microsoft kimlik platformu logout uç noktasıyla iletişim kurmasını sağlar. Ardından uç nokta:

    • Oturum tanımlama bilgisini tarayıcıdan temizler.
    • Çıkış sonrası yeniden yönlendirme URI'sini geri çağırır. Varsayılan olarak, oturum kapatma sonrası yeniden yönlendirme URI'sinde oturum kapatılan görünüm sayfası SignedOut.cshtml.cs görüntülenir. Bu sayfa, Microsoft.Identity.Web'in bir parçası olarak da sağlanır.

Uç noktaya yapılan çağrıya müdahale etme logout

Oturum kapatma sonrası URI'sı, uygulamaların genel oturum kapatmaya katılmasını sağlar.

ASP.NET Core OpenID Connect ara yazılımı, uygulamanızın adlı OnRedirectToIdentityProviderForSignOutbir OpenID Connect olayı sağlayarak Microsoft kimlik platformu logout uç noktasına yapılan çağrıyı kesmesini sağlar. Bu, Microsoft.Identity.Web tarafından otomatik olarak işlenir (web uygulamanızın web API'lerini çağırması durumunda hesapları temizler)

Protokol

Oturumu kapatma hakkında daha fazla bilgi edinmek istiyorsanız OpenID Connect'ten edinebileceğiniz protokol belgelerini okuyun.

Sonraki adımlar