Aplikacja internetowa, która loguje użytkowników: konfiguracja kodu
Dotyczy: Dzierżawcy siły roboczej dzierżawcy zewnętrzni (
dowiedz się więcej)
W tym artykule opisano sposób konfigurowania kodu dla aplikacji internetowej, która loguje użytkowników.
Biblioteki firmy Microsoft obsługujące aplikacje internetowe
Następujące biblioteki firmy Microsoft są używane do ochrony aplikacji internetowej (i internetowego interfejsu API):
Język/struktura | Projekt dotyczący GitHub |
Pakiet | Uzyskiwanie rozpoczął |
Logowanie użytkowników | Dostęp do interfejsów API sieci Web | Ogólnie dostępne (ogólna dostępność) lub Publiczna wersja zapoznawcza1 |
---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | — |
![]() |
![]() |
Ogólna dostępność |
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — |
![]() |
![]() |
Ogólna dostępność |
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Szybki start |
![]() |
![]() |
Ogólna dostępność |
Java | MSAL4J | msal4j | Szybki start |
![]() |
![]() |
Ogólna dostępność |
Wiosna | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Samouczek |
![]() |
![]() |
Ogólna dostępność |
Node.js | MSAL Node | msal-node | Szybki start |
![]() |
![]() |
Ogólna dostępność |
Python | MSAL Python | msal | — |
![]() |
![]() |
Ogólna dostępność |
Python | tożsamość | tożsamość | Szybki start |
![]() |
![]() |
-- |
(1)Uniwersalne postanowienia licencyjne dotyczące usług online mają zastosowanie do bibliotek w publicznej wersji zapoznawczej.
(2)Biblioteka Microsoft.IdentityModel weryfikuje tylko tokeny — nie może żądać identyfikatora ani tokenów dostępu.
Wybierz kartę odpowiadającą platformie, która Cię interesuje.
Fragmenty kodu w tym artykule i następujące elementy są wyodrębniane z samouczka przyrostowego aplikacji internetowej platformy ASP.NET Core, rozdział 1.
Aby uzyskać szczegółowe informacje o implementacji, warto zapoznać się z tym samouczkiem.
Pliki konfiguracji
Aplikacje internetowe, które logują użytkowników przy użyciu Platforma tożsamości Microsoft, są konfigurowane za pomocą plików konfiguracji. Te pliki muszą określać następujące wartości:
- Warto rozważyć instancję chmury, jeśli chcesz, aby twoja aplikacja działała na przykład w chmurach krajowych. Dostępne są różne opcje:
-
https://login.microsoftonline.com/
dla chmury publicznej platformy Azure -
https://login.microsoftonline.us/
dla instytucji rządowych USA na platformie Azure -
https://login.microsoftonline.de/
dla firmy Microsoft Entra Germany -
https://login.partner.microsoftonline.cn/common
dla Microsoft Entra China obsługiwanego przez firmę 21Vianet
-
- Odbiorcy w identyfikatorze dzierżawy. Opcje różnią się w zależności od tego, czy aplikacja jest jednodzierżawcza, czy wielodzierżawcza.
- Identyfikator GUID dzierżawy uzyskany z portalu Azure do logowania użytkowników w Twojej organizacji. Można również użyć nazwy domeny.
-
organizations
aby zalogować użytkowników na dowolnym koncie służbowym lub szkolnym -
common
aby zalogować użytkowników przy użyciu dowolnego konta służbowego lub osobistego Microsoft -
consumers
aby zalogować użytkowników tylko przy użyciu konta osobistego Microsoft
- Identyfikator klienta aplikacji skopiowany z witryny Azure Portal
Mogą również zostać wyświetlone odwołania do autorytetu, będące połączeniem wartości wystąpienia i identyfikatora dzierżawcy.
W ASP.NET Core te ustawienia znajdują się w pliku appsettings.json w sekcji "Microsoft Entra ID".
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id here]",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-oidc"
}
}
W programie ASP.NET Core inny plik (properties\launchSettings.json) zawiera adres URL (applicationUrl
) i port TLS/SSL (sslPort
) dla aplikacji i różnych profilów.
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3110/",
"sslPort": 44321
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"webApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:3110/"
}
}
}
W portalu Azure identyfikatory URI przekierowania zarejestrowane na stronie Uwierzytelnianie dla Twojej aplikacji muszą być zgodne z tymi adresami URL. W przypadku dwóch poprzednich plików konfiguracji to będzie https://localhost:44321/signin-oidc
. Przyczyną jest to, że applicationUrl
jest http://localhost:3110
, ale sslPort
jest określony (44321
).
CallbackPath
to /signin-oidc
, zgodnie z definicją w appsettings.json
.
W ten sam sposób identyfikator URI wylogowania zostanie ustawiony na https://localhost:44321/signout-oidc
.
Uwaga
Parametr SignedOutCallbackPath powinien być ustawiony na portal lub aplikację, aby uniknąć konfliktu podczas obsługi zdarzenia.
Kod inicjowania
Różnice kodu inicjowania są zależne od platformy. W przypadku ASP.NET Core i ASP.NET logowanie użytkowników jest delegowane do oprogramowania pośredniczącego OpenID Connect. Szablon ASP.NET lub ASP.NET Core generuje aplikacje internetowe dla punktu końcowego usługi Azure AD w wersji 1.0. Aby dostosować je do Platforma tożsamości Microsoft, wymagana jest konfiguracja.
W aplikacjach internetowych platformy ASP.NET Core (i internetowych interfejsach API) aplikacja jest chroniona, ponieważ masz Authorize
atrybut na kontrolerach lub akcjach kontrolera. Ten atrybut sprawdza, czy użytkownik jest uwierzytelniony. Przed wydaniem platformy .NET 6 inicjowanie kodu znajdowało się w pliku Startup.cs . Nowe projekty ASP.NET Core z platformą .NET 6 nie zawierają już pliku Startup.cs . Jego miejscem jest plik Program.cs . Pozostała część tego samouczka dotyczy platformy .NET 5 lub starszej wersji.
Uwaga
Jeśli chcesz zacząć bezpośrednio od nowych szablonów platformy ASP.NET Core dla platformy tożsamości Microsoft, które korzystają z Microsoft.Identity.Web, możesz pobrać wersję przedpremierową pakietu NuGet zawierającą szablony projektów dla platformy .NET 5.0. Następnie po zainstalowaniu można bezpośrednio stworzyć instancję aplikacji internetowych ASP.NET Core (MVC lub Blazor). Aby uzyskać szczegółowe informacje, zobacz Szablony projektów aplikacji internetowej Microsoft.Identity.Web. Jest to najprostsze podejście, ponieważ wykona wszystkie poniższe kroki.
Jeśli wolisz rozpocząć projekt przy użyciu bieżącego domyślnego szablonu ASP.NET Core web w programie Visual Studio lub za pomocą poleceń dotnet new mvc --auth SingleOrg
lub dotnet new webapp --auth SingleOrg
, zobaczysz kod podobny do następującego:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Ten kod używa starszego pakietu NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI , który służy do tworzenia aplikacji usługi Azure Active Directory w wersji 1.0. W tym artykule wyjaśniono, jak utworzyć aplikację Platforma tożsamości Microsoft w wersji 2.0, która zastępuje ten kod.
Dodaj pakiety NuGet Microsoft.Identity.Web i Microsoft.Identity.Web.UI do projektu. Usuń pakiet NuGet
Microsoft.AspNetCore.Authentication.AzureAD.UI
, jeśli jest obecny.Zaktualizuj kod w
ConfigureServices
, aby używał metodAddMicrosoftIdentityWebApp
iAddMicrosoftIdentityUI
.public class Startup { ... // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
W metodzie
Configure
w Startup.cs włącz uwierzytelnianie za pomocą wywołania metodyapp.UseAuthentication();
iapp.MapControllers();
.// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // more code here app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); // more code here }
W tym kodzie:
Metoda rozszerzenia
AddMicrosoftIdentityWebApp
jest zdefiniowana w Microsoft.Identity.Web, który;- Konfiguruje opcje odczytu pliku konfiguracji (tutaj w sekcji "Microsoft Entra ID")
- Konfiguruje opcje OpenID Connect tak, aby autorytetem była platforma tożsamości Microsoft.
- Weryfikuje wystawcę tokenu.
- Gwarantuje, że twierdzenia odpowiadające nazwie są mapowane z
preferred_username
twierdzenia w tokenie identyfikatora.
Oprócz obiektu konfiguracji można określić nazwę sekcji konfiguracji podczas wywoływania metody
AddMicrosoftIdentityWebApp
. Domyślnie to jestAzureAd
.AddMicrosoftIdentityWebApp
ma inne parametry dla zaawansowanych scenariuszy. Na przykład śledzenie zdarzeń oprogramowania pośredniczącego OpenID Connect może pomóc w rozwiązywaniu problemów z aplikacją internetową, jeśli uwierzytelnianie nie działa. Ustawienie opcjonalnego parametrusubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
natrue
spowoduje wyświetlenie, jak informacje są przetwarzane przez zestaw oprogramowania pośredniczącego ASP.NET Core w miarę, jak postępują od odpowiedzi HTTP do tożsamości użytkownika w programieHttpContext.User
.Metoda rozszerzenia
AddMicrosoftIdentityUI
jest zdefiniowana w Microsoft.Identity.Web.UI. Zapewnia on domyślny kontroler do obsługi logowania i wylogowywania.
Aby uzyskać więcej informacji na temat sposobu tworzenia aplikacji internetowych w witrynie Microsoft.Identity.Web, zobacz Web Apps in microsoft-identity-web (Aplikacje internetowe w witrynie microsoft-identity-web).