Udostępnij za pośrednictwem


Szybki start: ASP.NET aplikacja webowa, która autoryzuje użytkowników Microsoft Entra

Mile widziany! Prawdopodobnie nie jest to oczekiwana strona. Chociaż pracujemy nad poprawką, ten link powinien podjąć Cię do odpowiedniego artykułu:

Szybki start: dodaj logowanie za pomocą Microsoft do aplikacji ASP.NET

Przepraszamy za niedogodności i doceniamy cierpliwość, podczas gdy pracujemy nad rozwiązaniem tego problemu.

W tym szybkim przewodniku pobierzesz i uruchomisz przykładowy kod, który demonstruje aplikację internetową ASP.NET, umożliwiającą logowanie użytkowników za pomocą kont Microsoft Entra.

Krok 1. Konfigurowanie aplikacji w witrynie Azure Portal

Aby przykładowy kod w tym przewodniku szybkiego startu działał, wprowadź https://localhost:44368/ dla adresu URL przekierowania .

Skonfigurowano już Aplikacja jest skonfigurowana za pomocą tego atrybutu.

Krok 2. Pobieranie projektu

Uruchom projekt przy użyciu programu Visual Studio 2019.

Napiwek

Aby uniknąć błędów spowodowanych ograniczeniami długości ścieżki w systemie Windows, zalecamy wyodrębnienie archiwum lub sklonowanie repozytorium do katalogu w pobliżu katalogu głównego dysku.

Krok 3. Aplikacja jest skonfigurowana i gotowa do uruchomienia

Skonfigurowaliśmy projekt przy użyciu wartości właściwości aplikacji.

  1. Wyodrębnij plik .zip do folderu lokalnego, który znajduje się w pobliżu folderu głównego. Na przykład wyodrębnij do C:\Azure-Samples.

    Zalecamy wyodrębnienie archiwum do katalogu w pobliżu katalogu głównego dysku, aby uniknąć błędów spowodowanych ograniczeniami długości ścieżki w systemie Windows.

  2. Otwórz rozwiązanie w programie Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).

  3. W zależności od wersji programu Visual Studio może być konieczne kliknięcie prawym przyciskiem myszy projektu >AppModelv2-WebApp-OpenIDConnect-DotNet, a następnie wybranie polecenia Przywróć pakiety NuGet.

  4. Otwórz konsolę Menedżera pakietów, wybierając pozycję Widok>Inne okna>Konsola Menedżera pakietów. Następnie uruchom Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

Notatka

Enter_the_Supported_Account_Info_Here

Więcej informacji

Ta sekcja zawiera omówienie kodu wymaganego do logowania użytkowników. To omówienie może być przydatne, aby zrozumieć, jak działa kod, jakie są główne argumenty i jak dodać logowanie do istniejącej aplikacji ASP.NET.

Jak działa przykład

Diagram interakcji między przeglądarką internetową, aplikacją internetową i platformą tożsamości firmy Microsoft w przykładowej aplikacji.

Pakiety NuGet oprogramowania pośredniczącego OWIN

Potok uwierzytelniania można skonfigurować przy użyciu uwierzytelniania opartego na plikach cookie przy użyciu protokołu OpenID Connect w ASP.NET z pakietami oprogramowania pośredniczącego OWIN. Te pakiety można zainstalować, uruchamiając następujące polecenia w konsoli Menedżera pakietów w programie Visual Studio:

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

Klasa uruchamiania OWIN

Oprogramowanie pośredniczące OWIN korzysta z klasy startowej , która działa podczas uruchamiania procesu hostingu. W tym przewodniku szybkiego startu plik startup.cs znajduje się w folderze głównym. Poniższy kod przedstawia parametry używane w tym przewodniku Szybki start:

public void Configuration(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the client ID, authority, and redirect URI as obtained from Web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the code id_token, which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.CodeIdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
Gdzie Opis
ClientId Identyfikator aplikacji z aplikacji zarejestrowanej w witrynie Azure Portal.
Authority Punkt końcowy usługi tokenu zabezpieczającego (STS) dla użytkownika do uwierzytelniania. Zwykle jest to https://login.microsoftonline.com/{tenant}/v2.0 dla chmury publicznej. W tym adresie URL, {tenant} jest nazwą Twojej dzierżawy, identyfikatorem dzierżawy lub common jest odwołaniem do wspólnego punktu końcowego. (Wspólny punkt końcowy jest używany dla aplikacji wielodostępnych).
RedirectUri Adres URL, do którego użytkownicy są wysyłani po uwierzytelnieniu na platformie tożsamości firmy Microsoft.
PostLogoutRedirectUri Adres URL, pod którym użytkownicy są wysyłani po wylogowaniu.
Scope Lista żądanych zakresów oddzielona spacjami.
ResponseType Prośba, aby odpowiedź z uwierzytelniania zawierała kod autoryzacji i token tożsamości.
TokenValidationParameters Lista parametrów weryfikacji tokenu. W takim przypadku ValidateIssuer jest ustawiony na false, aby wskazać, że może zaakceptować logowania z dowolnego typu konta osobistego, służbowego lub szkolnego.
Notifications Lista delegatów, które mogą być uruchamiane w komunikatach OpenIdConnect.

Notatka

Ustawienie ValidateIssuer = false jest uproszczeniem tego przewodnika szybkiego startu. W rzeczywistych aplikacjach zweryfikuj wystawcę. Zapoznaj się z przykładami, aby dowiedzieć się, jak to zrobić.

Wyzwanie dotyczące uwierzytelniania

Możesz wymusić zalogowanie się przez użytkownika, żądając żądania uwierzytelnienia w kontrolerze:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Napiwek

Żądanie żądania uwierzytelnienia przy użyciu tej metody jest opcjonalne. Zwykle należy używać go, gdy widok ma być dostępny zarówno dla uwierzytelnionych, jak i nieuwierzytelnionych użytkowników. Alternatywnie można chronić kontrolery przy użyciu metody opisanej w następnej sekcji.

Atrybut do ochrony kontrolera lub akcji kontrolera

Kontroler lub jego akcje można chronić za pomocą atrybutu [Authorize]. Ten atrybut ogranicza dostęp do kontrolera lub akcji, zezwalając tylko uwierzytelnieni użytkownicy na dostęp do akcji w kontrolerze. Zadanie uwierzytelnienia będzie wykonywane automatycznie, gdy nieuwierzytelniony użytkownik próbuje uzyskać dostęp do jednej z akcji lub kontrolerów ozdobionych atrybutem [Authorize].

Pomoc i obsługa techniczna

Jeśli potrzebujesz pomocy, chcesz zgłosić problem lub poznać opcje pomocy technicznej, zobacz Pomoc i obsługa techniczna dla deweloperów.

Następne kroki

Aby uzyskać przewodnik krok po kroku dotyczący tworzenia aplikacji i nowych funkcji, w tym pełne wyjaśnienie tego szybkiego startu, wypróbuj samouczek ASP.NET.