Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:  Personalklienter (läs mer)
 Personalklienter (läs mer)
Den här artikeln beskriver hur du konfigurerar kod för en webbapp som loggar in användare.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. 
              Skapa ett konto kostnadsfritt. Det här kontot måste ha behörighet att hantera program. Använd någon av följande roller som behövs för att registrera programmet: - Appadministratör
- Programutvecklare
 
- Registrera en ny app i administrationscentret för Microsoft Entra, som endast konfigurerats för konton i den här organisationskatalogen. Mer information finns i Registrera ett program . Registrera följande värden från programöversiktssidan för senare användning: - App-ID (klient-ID)
- Katalog-ID (hyresgäst)
 
- Konfigurera en omdirigerings-URI för ditt program. Använd flikarna nedan för att hitta omdirigerings-URI:n för din plattform. För vissa kan du också behöva konfigurera en klienthemlighet. Mer information finns i Så här lägger du till en omdirigerings-URI i ditt program .
Välj webbplattformstyp och använd följande URI:er för din ASP.NET Core-webbapp
- 
              Omdirigerings-URI : https://localhost:44321/signin-oidc
- 
              Url för utloggning i frontkanalen : https://localhost:44321/signout-oidc
Microsoft-bibliotek som stöder webbappar
Följande Microsoft-bibliotek används för att skydda en webbapp (och ett webb-API):
| Språk/ramverk | Projekt på GitHub | Paket | Få komma igång | Logga in användare | Åtkomst till webb-API:er | Allmänt tillgänglig (GA) eller Offentlig förhandsversion1 | 
|---|---|---|---|---|---|---|
| .NÄT | MSAL.NET | Microsoft.Identity.Client | — |   |   | GA (Allmän tillgänglighet) | 
| .NÄT | Microsoft.IdentityModel | Microsoft.IdentityModel | — |  2 |  2 | GA (Allmän tillgänglighet) | 
| ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Snabbstart |   |   | GA (Allmän tillgänglighet) | 
| Java | MSAL4J | msal4j | Snabbstart |   |   | GA (Allmän tillgänglighet) | 
| Vår | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Handledning |   |   | GA (Allmän tillgänglighet) | 
| Node.js | MSAL-nod | msal-node | Snabbstart |   |   | GA (Allmän tillgänglighet) | 
| python | MSAL Python | msal | — |   |   | GA (Allmän tillgänglighet) | 
| python | identitet | identitet | Snabbstart |   |   | -- | 
(1)Universella licensvillkor för onlinetjänster gäller för bibliotek i offentlig förhandsversion.
(2)Microsoft.IdentityModel-biblioteket validerar endast token – det kan inte begära ID eller åtkomsttoken.
Välj den flik som motsvarar den plattform som du är intresserad av:
Kodfragmenten i den här artikeln och de följande har extraherats från ASP.NET Core-webbappens inkrementella självstudie, kapitel 1.
Du kanske vill se den här självstudien för fullständig implementeringsinformation.
Konfigurationsfiler
Webbprogram som loggar in användare med hjälp av Microsofts identitetsplattform konfigureras via konfigurationsfiler. Dessa filer måste ange följande värden:
- Molninstansen  om du till exempel vill att din app ska köras i nationella moln. De olika alternativen är; - 
              https://login.microsoftonline.com/för offentligt Azure-moln
- 
              https://login.microsoftonline.us/för Azure US Government
- 
              https://login.microsoftonline.de/för Microsoft Entra Tyskland
- 
              https://login.partner.microsoftonline.cn/commonför Microsoft Entra Kina som drivs av 21Vianet
 
- 
              
- Målgruppen i klientorganisationens ID. Alternativen varierar beroende på om din app är single tenant eller multitenant.
- Tenant-GUID som hämtats från Azure Portal för inloggning av användare i er organisation. Du kan också använda ett domännamn.
- 
              organizationsför att logga in användare på ett arbets- eller skolkonto
- 
              commonför att logga in användare med ett arbets- eller skolkonto eller ett personligt Microsoft-konto
- 
              consumersför att endast logga in användare med ett personligt Microsoft-konto
 
- Klient-ID:t för ditt program, som kopierats från Azure Portal
Du kan också se referenser till auktoriteten, en kombination av instansen och hyresgivar-ID-värden.
I ASP.NET Core finns de här inställningarna i filen appsettings.json i avsnittet "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"
  }
}
I ASP.NET Core innehåller en annan fil (egenskaper\launchSettings.json) URL:en (applicationUrl) och TLS/SSL-porten (sslPort) för ditt program och olika profiler.
{
  "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/"
    }
  }
}
I Azure Portal måste de omdirigerings-URI:er som du registrerar på sidan Autentisering för ditt program matcha dessa URL:er. För de två föregående konfigurationsfilerna skulle de vara https://localhost:44321/signin-oidc. Orsaken är att applicationUrl är http://localhost:3110, men sslPort anges (44321). 
              CallbackPath är /signin-oidc, enligt definitionen i appsettings.json.
På samma sätt skulle utloggnings-URI:n vara inställd på https://localhost:44321/signout-oidc.
Kommentar
SignedOutCallbackPath bör anges till antingen portalen eller applikationen för att undvika konflikter när händelsen hanteras.
Initieringskod
Initieringskodskillnaderna är plattformsberoende. För ASP.NET Core och ASP.NET delegeras inloggning av användare till OpenID Connect-mellanprogrammet. Mallen ASP.NET eller ASP.NET Core genererar webbprogram för Azure AD v1.0-slutpunkten. En del konfiguration krävs för att anpassa dem till Microsofts identitetsplattform.
I ASP.NET Core-webbappar (och webb-API:er) skyddas programmet eftersom du har ett Authorize attribut på kontrollanterna eller kontrollantåtgärderna. Det här attributet kontrollerar att användaren är autentiserad. Innan .NET 6 släpptes fanns kodinitiering i filen Startup.cs .  Nya ASP.NET Core-projekt med .NET 6 innehåller inte längre en Startup.cs fil.  Att ta dess plats är den Program.cs filen.  Resten av den här självstudien gäller .NET 5 eller lägre.
Kommentar
Om du vill börja direkt med de nya ASP.NET Core-mallarna för Microsofts identitetsplattform, som använder Microsoft.Identity.Web, kan du ladda ned ett förhandsversions nuGet-paket som innehåller projektmallar för .NET 5.0. När du har installerat kan du sedan direkt instansiera ASP.NET Core-webbprogram (MVC eller Blazor). Mer information finns i Projektmallar för Microsoft.Identity.Web-webbappar. Det här är den enklaste metoden eftersom den gör alla följande steg åt dig.
Om du föredrar att starta projektet med det aktuella standard-ASP.NET Core-webbprojektet i Visual Studio eller med hjälp dotnet new mvc --auth SingleOrg av eller dotnet new webapp --auth SingleOrgvisas kod som följande:
 services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
         .AddAzureAD(options => Configuration.Bind("AzureAd", options));
Den här koden använder det äldre NuGet-paketet Microsoft.AspNetCore.Authentication.AzureAD.UI som används för att skapa ett Azure Active Directory v1.0-program. I den här artikeln beskrivs hur du skapar ett Microsofts identitetsplattform v2.0-program som ersätter koden.
- Lägg till NuGet-paketen Microsoft.Identity.Web och Microsoft.Identity.Web.UI i projektet. - Microsoft.AspNetCore.Authentication.AzureAD.UITa bort NuGet-paketet om det finns.
- Uppdatera koden i - ConfigureServicesså att den- AddMicrosoftIdentityWebAppanvänder metoderna och- AddMicrosoftIdentityUI.- 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();
- ConfigureI metoden i Startup.cs aktiverar du autentisering med ett anrop till- app.UseAuthentication();och- app.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 }
I den koden:
- Tilläggsmetoden - AddMicrosoftIdentityWebAppdefinieras i Microsoft.Identity.Web, som;- Konfigurerar alternativ för att läsa konfigurationsfilen (här från avsnittet "Microsoft Entra ID")
- Konfigurerar OpenID Connect-alternativen så att utfärdaren är Microsofts identitetsplattform.
- Verifierar utfärdaren av token.
- Säkerställer att anspråken som motsvarar namnet mappas från anspråket preferred_usernamei ID-token.
 
- Förutom konfigurationsobjektet kan du ange namnet på konfigurationsavsnittet när du anropar - AddMicrosoftIdentityWebApp. Som standard är- AzureAddet .
- AddMicrosoftIdentityWebApphar andra parametrar för avancerade scenarier. Till exempel kan spårning av OpenID Connect-mellanprogramshändelser hjälpa dig att felsöka webbprogrammet om autentiseringen inte fungerar. Om du anger den valfria parametern- subscribeToOpenIdConnectMiddlewareDiagnosticsEventstill- truevisas hur information bearbetas av uppsättningen med ASP.NET Core-mellanprogram när den fortsätter från HTTP-svaret till användarens identitet i- HttpContext.User.
- Tilläggsmetoden - AddMicrosoftIdentityUIdefinieras i Microsoft.Identity.Web.UI. Den tillhandahåller en standardstyrenhet för att hantera inloggning och utloggning.
Mer information om hur Microsoft.Identity.Web gör att du kan skapa webbappar finns i Webbappar i microsoft-identity-web.