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 .
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.
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.
Otwórz rozwiązanie w programie Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).
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.
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
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 lubcommon
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 nafalse
, 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.