Szybki start: ASP.NET aplikacji internetowej, która loguje użytkowników firmy Microsoft Entra

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

Szybki start: dodawanie logowania za pomocą firmy Microsoft do aplikacji internetowej ASP.NET

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

W tym przewodniku Szybki start pobierzesz i uruchomisz przykładowy kod, który demonstruje aplikację internetową ASP.NET, która może logować użytkowników przy użyciu kont Microsoft Entra.

Krok 1. Konfigurowanie aplikacji w witrynie Azure Portal

Aby przykładowy kod w tym przewodniku Szybki start działał, wprowadź identyfikator https://localhost:44368/URI przekierowania.

Already configured Aplikacja jest skonfigurowana przy użyciu 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 folderu 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-OpenID Połączenie-DotNet.sln).

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

  4. Otwórz konsolę Menedżer pakietów, wybierając pozycję Wyświetl>inne okna> Menedżer pakietów Konsola. Następnie należy uruchomić polecenie Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

Uwaga

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 of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

Pakiety NuGet oprogramowania pośredniczącego OWIN

Potok uwierzytelniania można skonfigurować przy użyciu uwierzytelniania opartego na plikach cookie przy użyciu Połączenie OpenID w ASP.NET z pakietami oprogramowania pośredniczącego OWIN. Te pakiety można zainstalować, uruchamiając następujące polecenia w konsoli Menedżer 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 używa klasy uruchamiania uruchamianej podczas uruchamiania procesu hostingu. W tym przewodniku Szybki start 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 chmura publiczna. W tym adresie URL {tenant} jest nazwą dzierżawy, identyfikatorem dzierżawy lub common odwołaniem do wspólnego punktu końcowego. (Wspólny punkt końcowy jest używany dla aplikacji wielodostępnych).
RedirectUri Adres URL, pod którym użytkownicy są wysyłani po uwierzytelnieniu względem Platforma tożsamości Microsoft.
PostLogoutRedirectUri Adres URL, pod którym użytkownicy są wysyłani po wylogowaniu.
Scope Lista żądanych zakresów oddzielona spacjami.
ResponseType Żądanie odpowiedzi z uwierzytelniania zawiera kod autoryzacji i token identyfikatora.
TokenValidationParameters Lista parametrów na potrzeby weryfikacji tokenu. W takim przypadku jest ustawiona wartość , aby false wskazać, ValidateIssuer że może zaakceptować logowania z dowolnego typu konta osobistego, służbowego lub szkolnego.
Notifications Lista delegatów, które mogą być uruchamiane na OpenIdConnect komunikatach.

Uwaga

Ustawienie ValidateIssuer = false to uproszczenie tego przewodnika Szybki start. W rzeczywistych aplikacjach zweryfikuj wystawcę. Zapoznaj się z przykładami, aby dowiedzieć się, jak to zrobić.

Wyzwanie dotyczące uwierzytelniania

Możesz wymusić logowanie użytkownika, wysyłając żądanie 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. Innym rozwiązaniem jest ochrona kontrolerów przy użyciu metody opisanej w następnej sekcji.

Atrybut do ochrony kontrolera lub akcji kontrolera

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

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ć kompletny przewodnik krok po kroku dotyczący tworzenia aplikacji i nowych funkcji, w tym pełne wyjaśnienie tego przewodnika Szybki start, wypróbuj samouczek ASP.NET.