App Web che accede agli utenti: Configurazione del codice
Informazioni su come configurare il codice per l'app Web che accede agli utenti.
Librerie Microsoft che supportano le app Web
Le librerie Microsoft seguenti vengono usate per proteggere un'app Web (e un'API Web):
Linguaggio/framework | Progetto in GitHub |
Pacchetto | Ottenere avviata |
Consentire l'accesso degli utenti | Accedere alle API Web | Disponibile a livello generale (GA) o Anteprimapubblica 1 |
---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | — | Disponibilità generale | ||
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | 2 | 2 | Disponibilità generale |
ASP.NET Core | ASP.NET Core | Microsoft.AspNetCore.Authentication | Guida introduttiva | Disponibilità generale | ||
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Guida introduttiva | Disponibilità generale | ||
Java | MSAL4J | msal4j | Guida introduttiva | Disponibilità generale | ||
Spring | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Esercitazione | Disponibilità generale | ||
Node.JS | MSAL Node | msal-node | Guida introduttiva | Disponibilità generale | ||
Python | MSAL Python | msal | Disponibilità generale | |||
Python | identity | identity | Guida introduttiva | -- |
(1)Le condizioni di licenza universali per i servizi online si applicano alle librerie in anteprima pubblica.
(2) La libreria Microsoft.IdentityModel convalida solo i token. Non può richiedere l'ID o i token di accesso.
Selezionare la scheda corrispondente alla piattaforma a cui si è interessati:
I frammenti di codice in questo articolo e i seguenti vengono estratti dall'esercitazione incrementale dell'app Web core di ASP.NET, capitolo 1.
Per informazioni dettagliate sull'implementazione, è possibile fare riferimento a questa esercitazione.
File di configurazione
Le applicazioni Web che consentono l'accesso degli utenti tramite Microsoft Identity Platform vengono configurate tramite file di configurazione. Tali file devono specificare i valori seguenti:
- L'istanza cloud se si vuole che l'app venga eseguita in cloud nazionali, ad esempio. Le diverse opzioni includono;
https://login.microsoftonline.com/
per il cloud pubblico di Azurehttps://login.microsoftonline.us/
per Azure US Governmenthttps://login.microsoftonline.de/
per Microsoft Entra Germaniahttps://login.partner.microsoftonline.cn/common
per Microsoft Entra China gestito da 21Vianet
- Gruppo di destinatari nell'ID tenant. Le opzioni variano a seconda che l'app sia a tenant singolo o multi-tenant.
- GUID del tenant ottenuto dal portale di Azure per consentire agli utenti dell'organizzazione di accedere. È anche possibile usare un nome di dominio.
organizations
per accedere agli utenti in qualsiasi account aziendale o dell'istituto di istruzionecommon
per accedere agli utenti con qualsiasi account aziendale o dell'istituto di istruzione o account personale Microsoftconsumers
per accedere agli utenti solo con un account personale Microsoft
- ID client per l'applicazione, copiato dal portale di Azure
È anche possibile visualizzare i riferimenti all'autorità, una concatenazione dei valori dell'istanza e dell'ID tenant.
In ASP.NET Core queste impostazioni si trovano nel file appsettings.json , nella sezione "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"
}
}
In ASP.NET Core, un altro file (proprietà\launch Impostazioni.json) contiene l'URL (applicationUrl
) e la porta TLS/SSL (sslPort
) per l'applicazione e i vari profili.
{
"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/"
}
}
}
Nella portale di Azure, gli URI di reindirizzamento registrati nella pagina Autenticazione per l'applicazione devono corrispondere a questi URL. Per i due file di configurazione precedenti, sono https://localhost:44321/signin-oidc
. Il motivo è che applicationUrl
è http://localhost:3110
, ma sslPort
è specificato (44321
). CallbackPath
è /signin-oidc
, come definito in appsettings.json
.
Allo stesso modo, l'URI di disconnessione verrebbe impostato su https://localhost:44321/signout-oidc
.
Nota
SignedOutCallbackPath deve essere impostato sul portale o sull'applicazione per evitare conflitti durante la gestione dell'evento.
Codice di inizializzazione
Le differenze di codice di inizializzazione sono dipendenti dalla piattaforma. Per ASP.NET Core e ASP.NET, l'accesso degli utenti viene delegato al middleware openID Connessione. Il modello ASP.NET o ASP.NET Core genera applicazioni Web per l'endpoint di Azure AD v1.0. Alcune configurazioni sono necessarie per adattarle a Microsoft Identity Platform.
In ASP.NET App Web core (e API Web), l'applicazione è protetta perché si dispone di un Authorize
attributo nei controller o nelle azioni del controller. Questo attributo verifica che l'utente sia autenticato. Prima del rilascio di .NET 6, l'inizializzazione del codice era nel file Startup.cs . I nuovi progetti ASP.NET Core con .NET 6 non contengono più un file Startup.cs . L'esecuzione del file è il file Program.cs . La parte restante di questa esercitazione riguarda .NET 5 o versione precedente.
Nota
Se si vuole iniziare direttamente con i nuovi modelli di ASP.NET Core per Microsoft Identity Platform, che sfruttano Microsoft.Identity.Web, è possibile scaricare un pacchetto NuGet di anteprima contenente i modelli di progetto per .NET 5.0. Dopo l'installazione, è quindi possibile creare direttamente un'istanza di ASP.NET applicazioni Web Core (MVC o Blazor). Per informazioni dettagliate, vedere Modelli di progetto di app Web Microsoft.Identity.Web. Questo è l'approccio più semplice perché eseguirà tutti i passaggi seguenti.
Se si preferisce avviare il progetto con l'impostazione predefinita corrente ASP.NET progetto Web Core in Visual Studio o usando dotnet new mvc --auth SingleOrg
o dotnet new webapp --auth SingleOrg
, verrà visualizzato codice simile al seguente:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Questo codice usa il pacchetto NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI legacy usato per creare un'applicazione Azure Active Directory v1.0. Questo articolo illustra come creare un'applicazione Microsoft Identity Platform v2.0 che sostituisce tale codice.
Aggiungere i pacchetti NuGet Microsoft.Identity.Web e Microsoft.Identity.Web.UI al progetto. Rimuovere il
Microsoft.AspNetCore.Authentication.AzureAD.UI
pacchetto NuGet, se presente.Aggiornare il codice in in
ConfigureServices
in modo che usi iAddMicrosoftIdentityWebApp
metodi eAddMicrosoftIdentityUI
.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();
Configure
Nel metodo in Startup.cs abilitare l'autenticazione con una chiamata aapp.UseAuthentication();
eapp.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 }
Nel codice:
Il
AddMicrosoftIdentityWebApp
metodo di estensione è definito in Microsoft.Identity.Web, che;- Configura le opzioni per leggere il file di configurazione (qui dalla sezione "Microsoft Entra ID")
- Configura le opzioni di Connessione OpenID in modo che l'autorità sia Microsoft Identity Platform.
- Convalida l'autorità di certificazione del token.
- Assicura che le attestazioni corrispondenti al nome vengano mappate dall'attestazione
preferred_username
nel token ID.
Oltre all'oggetto di configurazione, è possibile specificare il nome della sezione di configurazione quando si chiama
AddMicrosoftIdentityWebApp
. Per impostazione predefinita, èAzureAd
.AddMicrosoftIdentityWebApp
include altri parametri per scenari avanzati. Ad esempio, la traccia di openID Connessione eventi middleware consente di risolvere i problemi dell'applicazione Web se l'autenticazione non funziona. L'impostazione del parametrosubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
facoltativo sutrue
mostrerà come vengono elaborate le informazioni dal set di middleware ASP.NET Core man mano che procede dalla risposta HTTP all'identità dell'utente inHttpContext.User
.Il
AddMicrosoftIdentityUI
metodo di estensione è definito in Microsoft.Identity.Web.UI. Fornisce un controller predefinito per gestire l'accesso e la disconnessura.
Per altre informazioni su come Microsoft.Identity.Web consente di creare app Web, vedere App Web in microsoft-identity-web.
Passaggi successivi
Nell'articolo successivo si apprenderà come attivare l'accesso e la disconnessità.
Passare all'articolo successivo in questo scenario, Accedere e disconnettersi.