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.
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.
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.
Otwórz rozwiązanie w programie Visual Studio (AppModelv2-WebApp-OpenID Połączenie-DotNet.sln).
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.
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
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 lubcommon
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.