Condividi tramite


Servizi di autenticazione esterna con API Web ASP.NET (C#)

Per lo sviluppo di nuove app Web, è consigliabile API minime

È consigliabile usare l'opzione di autenticazione sicura più sicura. Per le app .NET distribuite in Azure, vedere:

Azure Key Vault e .NET Aspirare offrono il modo più sicuro per archiviare e recuperare i segreti. Azure Key Vault è un servizio cloud che protegge le chiavi di crittografia e i segreti, ad esempio certificati, stringhe di connessione e password. Per .NET Aspire, vedere Comunicazione sicura tra le integrazioni di hosting e client.

Evitare l'autorizzazione con credenziali di password del proprietario della risorsa perché:

  • Espone la password dell'utente al client.
  • È un rischio significativo per la sicurezza.
  • Deve essere usato solo quando altri flussi di autenticazione non sono possibili.

Quando l'app viene distribuita in un server di test, è possibile usare una variabile di ambiente per impostare la stringa di connessione su un server di database di test. Le variabili di ambiente vengono in genere archiviate in testo normale e non crittografato. Se il computer o il processo è compromesso, è possibile accedere alle variabili di ambiente da parti non attendibili. Si consiglia di non usare le variabili di ambiente per archiviare una stringa di connessione di produzione, poiché non è l'approccio più sicuro.

Linee guida per i dati di configurazione:

  • Non archiviare mai password o altri dati sensibili nel codice del provider di configurazione o nei file di configurazione di testo normale.
  • Non usare segreti di produzione in ambienti di sviluppo o test.
  • Specificare segreti all'esterno del progetto in modo che non possano essere accidentalmente sottoposti a commit in un repository di codice sorgente.

Visual Studio 2017 e ASP.NET 4.7.2 espandono le opzioni di sicurezza per le applicazioni a pagina singola (SPA) e i servizi di Web API per l'integrazione con servizi di autenticazione esterni, che includono diversi servizi di autenticazione OAuth/OpenID e dei social media: Account di Microsoft, Twitter, Facebook e Google.

In questa procedura dettagliata

Prerequisiti

Per seguire gli esempi in questa procedura dettagliata, è necessario disporre degli elementi seguenti:

Uso di Servizi di autenticazione esterna

L'abbondanza di servizi di autenticazione esterni attualmente disponibili per gli sviluppatori Web consente di ridurre il tempo di sviluppo durante la creazione di nuove applicazioni Web. Gli utenti Web hanno in genere diversi account esistenti per i servizi Web più diffusi e i siti Web di social media, pertanto quando un'applicazione Web implementa i servizi di autenticazione da un servizio Web esterno o da un sito Web di social media, consente di risparmiare tempo di sviluppo che sarebbe stato speso per la creazione di un'implementazione di autenticazione. L'uso di un servizio di autenticazione esterno solleva gli utenti finali dall'obbligo di creare un altro account per l'applicazione web e anche di ricordare un altro nome utente e password.

In passato, gli sviluppatori hanno avuto due opzioni: creare la propria implementazione di autenticazione o imparare a integrare un servizio di autenticazione esterno nelle applicazioni. Al livello più semplice, il diagramma seguente illustra un semplice flusso di richiesta per un agente utente (Web browser) che richiede informazioni da un'applicazione Web configurata per l'uso di un servizio di autenticazione esterno:

Illustrazione di un flusso di richiesta semplice per un agente utente

Nel diagramma precedente, l'agente utente (o il Web browser in questo esempio) effettua una richiesta a un'applicazione Web, che reindirizza il Web browser a un servizio di autenticazione esterno. L'agente utente invia le credenziali al servizio di autenticazione esterno e, se l'agente utente è stato autenticato correttamente, il servizio di autenticazione esterno reindirizzerà l'agente utente all'applicazione Web originale con una forma di token che l'agente utente invierà all'applicazione Web. L'applicazione Web userà il token per verificare che l'agente utente sia stato autenticato correttamente dal servizio di autenticazione esterno e che l'applicazione Web possa usare il token per raccogliere altre informazioni sull'agente utente. Al termine dell'elaborazione delle informazioni dell'agente utente, l'applicazione Web restituirà la risposta appropriata all'agente utente in base alle impostazioni di autorizzazione.

In questo secondo esempio, l'agente utente negozia con l'applicazione Web e il server di autorizzazione esterno e l'applicazione Web esegue ulteriori comunicazioni con il server di autorizzazione esterno per recuperare informazioni aggiuntive sull'agente utente:

Illustrazione dell'agente utente che negozia con l'applicazione Web

Visual Studio 2017 e ASP.NET 4.7.2 semplificano l'integrazione con i servizi di autenticazione esterni per gli sviluppatori fornendo l'integrazione predefinita per i servizi di autenticazione seguenti:

  • Facebook
  • Google
  • Account Windows Live ID (account Microsoft)
  • Twitter

Gli esempi in questa procedura dettagliata illustrano come configurare ognuno dei servizi di autenticazione esterna supportati usando il nuovo modello di applicazione Web ASP.NET fornito con Visual Studio 2017.

Nota

Se necessario, potrebbe essere necessario aggiungere il nome di dominio completo alle impostazioni per il servizio di autenticazione esterno. Questo requisito si basa sui vincoli di sicurezza per alcuni servizi di autenticazione esterni che richiedono il nome di dominio completo nelle impostazioni dell'applicazione in modo che corrispondano al nome di dominio completo usato dai client. I passaggi per questa operazione variano notevolmente per ogni servizio di autenticazione esterno. È necessario consultare la documentazione per ogni servizio di autenticazione esterno per verificare se è necessario e come configurare queste impostazioni. Se è necessario configurare IIS Express per l'uso di un FQDN per il test di questo ambiente, vedere la sezione Configurazione di IIS Express per l'uso di un nome di dominio completo più avanti in questa procedura dettagliata.

Creare un'applicazione Web di esempio

La procedura seguente consentirà di creare un'applicazione di esempio usando il modello di applicazione Web ASP.NET e verrà usata questa applicazione di esempio per ognuno dei servizi di autenticazione esterni più avanti in questa procedura dettagliata.

Avviare Visual Studio 2017 e selezionare Nuovo progetto nella pagina Iniziale. In alternativa, dal menu File, selezionare Nuovo e quindi Progetto.

Quando viene visualizzata la finestra di dialogo Nuovo progetto, selezionare Installato ed espandere Visual C#. In Visual C#selezionare Web. Nell'elenco dei modelli di progetto selezionare ASP.NET Applicazione Web (.Net Framework). Immettere un nome per il progetto e fare clic su OK.

Immagine della finestra di dialogo Nuovo progetto

Quando viene visualizzato il progetto ASP.NET Nuovo, selezionare il modello applicazione a pagina singola e fare clic su Crea progetto.

Immagine di selezione del modello

Attendere che Visual Studio 2017 crei il progetto.

Al termine della creazione del progetto da parte di Visual Studio 2017, aprire il file Startup.Auth.cs che si trova nella cartella App_Start.

Quando si crea il progetto per la prima volta, nessuno dei servizi di autenticazione esterni è abilitato nel file Startup.Auth.cs; di seguito viene mostrato un esempio di come potrebbe apparire il codice, con le sezioni evidenziate che indicano dove abilitare un servizio di autenticazione esterno e le impostazioni pertinenti per utilizzare gli account Microsoft, l'autenticazione tramite Twitter, Facebook o Google con l'applicazione ASP.NET.

using System;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.DataProtection;
using Microsoft.Owin.Security.Google;
using Microsoft.Owin.Security.OAuth;
using Owin;
using WebApplication1.Models;
using WebApplication1.Providers;

namespace WebApplication1
{
    public partial class Startup
    {
        // Enable the application to use OAuthAuthorization. You can then secure your Web APIs
        static Startup()
        {
            PublicClientId = "web";

            OAuthOptions = new OAuthAuthorizationServerOptions
            {
                TokenEndpointPath = new PathString("/Token"),
                AuthorizeEndpointPath = new PathString("/Account/Authorize"),
                Provider = new ApplicationOAuthProvider(PublicClientId),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
                AllowInsecureHttp = true
            };
        }

        public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }

        public static string PublicClientId { get; private set; }

        // For more information on configuring authentication, please visit https://go.microsoft.com/fwlink/?LinkId=301864
        public void ConfigureAuth(IAppBuilder app)
        {
            // Configure the db context, user manager and signin manager to use a single instance per request
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

            // Enable the application to use a cookie to store information for the signed in user
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                Provider = new CookieAuthenticationProvider
                {
                    // Enables the application to validate the security stamp when the user logs in.
                    // This is a security feature which is used when you change a password or add an external login to your account.  
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                        validateInterval: TimeSpan.FromMinutes(20),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });
            // Use a cookie to temporarily store information about a user logging in with a third party login provider
            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

            // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process.
            app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));

            // Enables the application to remember the second login verification factor such as phone or email.
            // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from.
            // This is similar to the RememberMe option when you log in.
            app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);

            // Enable the application to use bearer tokens to authenticate users
            app.UseOAuthBearerTokens(OAuthOptions);

            // Uncomment the following lines to enable logging in with third party login providers
            //app.UseMicrosoftAccountAuthentication(
            //    clientId: "",
            //    clientSecret: "");

            //app.UseTwitterAuthentication(
            //    consumerKey: "",
            //    consumerSecret: "");

            //app.UseFacebookAuthentication(
            //    appId: "",
            //    appSecret: "");

            //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
            //{
            //    ClientId = "",
            //    ClientSecret = ""
            //});
        }
    }
}

Quando si preme F5 per compilare ed eseguire il debug dell'applicazione Web, verrà visualizzata una schermata di accesso in cui si noterà che non sono stati definiti servizi di autenticazione esterni.

schermata di accesso

Nelle sezioni seguenti si apprenderà come abilitare ognuno dei servizi di autenticazione esterni forniti con ASP.NET in Visual Studio 2017.

Abilitazione dell'autenticazione di Facebook

L'uso dell'autenticazione di Facebook richiede la creazione di un account per sviluppatore Facebook e il progetto richiederà un ID applicazione e una chiave privata da Facebook per funzionare. Per informazioni sulla creazione di un account per sviluppatore Facebook e sul recupero dell'ID applicazione e della chiave privata, vedere https://go.microsoft.com/fwlink/?LinkID=252166.

Dopo aver ottenuto l'ID applicazione e la chiave privata, seguire questa procedura per abilitare l'autenticazione di Facebook per l'applicazione Web:

  1. Quando il progetto è aperto in Visual Studio 2017, aprire il file Startup.Auth.cs.

  2. Trova la sezione del codice relativa all'autenticazione di Facebook.

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //    consumerKey: "",
    //    consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //    appId: "",
    //    appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Rimuovere i caratteri "//" per rimuovere il commento dalle righe di codice evidenziate e quindi aggiungere l'ID dell'applicazione e la chiave segreta. Dopo aver aggiunto questi parametri, è possibile ricompilare il progetto:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "426f62526f636b73",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication();
    
  4. Quando si preme F5 per aprire l'applicazione Web nel Web browser, si noterà che Facebook è stato definito come servizio di autenticazione esterno:

    Immagine di Facebook definita

  5. Quando si fa clic sul pulsante facebook , il browser verrà reindirizzato alla pagina di accesso di Facebook:

    Immagine della pagina di accesso di Facebook

  6. Dopo aver immesso le credenziali di Facebook e aver fatto clic su Accedi, il Web browser verrà reindirizzato all'applicazione Web, che richiederà di specificare il nome utente che si vuole associare al proprio account Facebook:

    immagine dell'applicazione web

  7. Dopo aver inserito il tuo username e aver fatto clic sul pulsante Registrati, l'app web visualizzerà la home page predefinita per il tuo account Facebook.

    immagine che visualizza la home page predefinita di Facebook

Abilitazione di Google Authentication

L'uso dell'autenticazione google richiede di creare un account per sviluppatore Google e il progetto richiederà un ID applicazione e una chiave privata di Google per funzionare. Per informazioni sulla creazione di un account per sviluppatore Google e sul recupero dell'ID applicazione e della chiave privata, vedere https://developers.google.com.

Per abilitare l'autenticazione Google per l'applicazione Web, seguire questa procedura:

  1. Quando il progetto è aperto in Visual Studio 2017, aprire il file Startup.Auth.cs.

  2. Individuare la sezione relativa all'autenticazione Google nel codice.

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //    consumerKey: "",
    //    consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //    appId: "",
    //    appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Rimuovere i caratteri "//" per togliere il commento dalle righe di codice evidenziate e quindi aggiungere l'ID applicazione e la chiave segreta. Dopo aver aggiunto questi parametri, è possibile ricompilare il progetto:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    {
        ClientId = "477522346600.apps.googleusercontent.com",
        ClientSecret = "gobkdpbocikdfbnfahjladnetpdkvmic"
    });
    
  4. Quando si preme F5 per aprire l'applicazione Web nel Web browser, si noterà che Google è stato definito come servizio di autenticazione esterno:

    Image Google è stato definito

  5. Quando si fa clic sul pulsante Google, il browser verrà reindirizzato alla pagina di accesso di Google:

    immagine della pagina di accesso di Google

  6. Dopo aver immesso le credenziali di Google e aver fatto clic su Accedi, Google chiederà di verificare che l'applicazione Web abbia le autorizzazioni per accedere all'account Google:

    Immagine delle autorizzazioni google

  7. Quando si fa clic su Accetta, il Web browser verrà reindirizzato all'applicazione Web, che richiederà di specificare il nome utente che si desidera associare al proprio account Google:

    Immagine del prompt dell'applicazione web per il nome utente da associare

  8. Dopo aver immesso il nome utente e aver fatto clic sul pulsante Iscrizione, l'applicazione web visualizzerà l'Home Page predefinita per l'account Google.

    immagine della home page predefinita di Google

Abilitazione dell'autenticazione Microsoft

L'autenticazione Microsoft richiede la creazione di un account per sviluppatore e richiede un ID client e un segreto client per funzionare. Per informazioni sulla creazione di un account per sviluppatore Microsoft e sul recupero dell'ID client e del segreto client, vedere https://go.microsoft.com/fwlink/?LinkID=144070.

Dopo aver ottenuto la chiave consumer e il segreto consumer, seguire questa procedura per abilitare l'autenticazione Microsoft per l'applicazione Web:

  1. Quando il progetto è aperto in Visual Studio 2017, aprire il file Startup.Auth.cs.

  2. Trova la sezione di autenticazione Microsoft nel codice:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Rimuovere i caratteri "//" per scommentare le righe di codice evidenziate e quindi aggiungere l'ID client e il client secret. Dopo aver aggiunto questi parametri, è possibile ricompilare il progetto:

    // Uncomment the following lines to enable logging in with third party login providers
    app.UseMicrosoftAccountAuthentication(
        clientId: "426f62526f636b73",
        clientSecret: "57686f6120447564652c2049495320526f636b73");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  4. Quando si preme F5 per aprire l'applicazione Web nel Web browser, si noterà che Microsoft è stato definito come servizio di autenticazione esterno:

    immagine di Microsoft definita

  5. Quando si fa clic sul pulsante Microsoft, il browser verrà reindirizzato alla pagina di accesso Microsoft:

    immagine della pagina di accesso Microsoft

  6. Dopo aver immesso le credenziali Microsoft e aver fatto clic su Accedi, verrà richiesto di verificare che l'applicazione Web disponga delle autorizzazioni per accedere all'account Microsoft:

    Immagine delle autorizzazioni Microsoft

  7. Quando si fa clic su , il Web browser verrà reindirizzato all'applicazione Web, che richiederà di specificare il nome utente da associare all'account Microsoft:

    Immagine dell'account Google da associare

  8. Dopo aver immesso il nome utente e aver fatto clic sul pulsante Registrati, l'applicazione Web visualizzerà la home page predefinita per l'account Microsoft:

    Immagine della home page predefinita di Microsoft

Abilitazione dell'autenticazione di Twitter

L'autenticazione di Twitter richiede la creazione di un account per sviluppatore e richiede una chiave utente e un segreto consumer per funzionare. Per informazioni sulla creazione di un account per sviluppatore Twitter e sul recupero della chiave utente e del segreto utente, vedere https://go.microsoft.com/fwlink/?LinkID=252166.

Dopo aver ottenuto la chiave consumer e il segreto consumer, seguire questa procedura per abilitare l'autenticazione di Twitter per l'applicazione web:

  1. Quando il progetto è aperto in Visual Studio 2017, aprire il file Startup.Auth.cs.

  2. Trova la sezione del codice relativa all'autenticazione di Twitter.

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    //app.UseTwitterAuthentication(
    //   consumerKey: "",
    //   consumerSecret: "");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  3. Rimuovere i caratteri "//" per scommentare le righe di codice evidenziate e quindi aggiungere la chiave consumer e il consumer secret. Dopo aver aggiunto questi parametri, è possibile ricompilare il progetto:

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    //    clientId: "",
    //    clientSecret: "");
    
    app.UseTwitterAuthentication(
       consumerKey: "426f62526f636b73",
       consumerSecret: "57686f6120447564652c2049495320526f636b73");
    
    //app.UseFacebookAuthentication(
    //   appId: "",
    //   appSecret: "");
    
    //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
    //{
    //    ClientId = "",
    //    ClientSecret = ""
    //});
    
  4. Quando si preme F5 per aprire l'applicazione Web nel Web browser, si noterà che Twitter è stato definito come servizio di autenticazione esterna:

    immagine di Twitter definita

  5. Quando si fa clic sul pulsante twitter , il browser verrà reindirizzato alla pagina di accesso di Twitter:

    immagine della pagina di accesso di Twitter

  6. Dopo aver immesso le credenziali di Twitter e aver fatto clic su Autorizzare l'app, il Web browser verrà reindirizzato all'applicazione Web, che richiederà di specificare il nome utente che si vuole associare all'account Twitter:

    Immagine dell'account Twitter da associare nell'app Web

  7. Dopo aver immesso il nome utente e aver fatto clic sul pulsante iscrizione, l'applicazione Web visualizzerà la home page predefinita per l'account Twitter:

    Immagine della home page predefinita di Twitter

Informazioni aggiuntive

Per altre informazioni sulla creazione di applicazioni che usano OAuth e OpenID, vedere gli URL seguenti:

Combinazione di servizi di autenticazione esterna

Per una maggiore flessibilità, è possibile definire più servizi di autenticazione esterna contemporaneamente. Ciò consente agli utenti dell'applicazione Web di usare un account da uno dei servizi di autenticazione esterni abilitati:

Immagine di più servizi di autenticazione esterni

Configurare IIS Express per l'uso di un nome di dominio completo qualificato

Alcuni provider di autenticazione esterni non supportano il test dell'applicazione usando un indirizzo HTTP come http://localhost:port/. Per risolvere questo problema, è possibile aggiungere un mapping di nome di dominio completo (FQDN) statico al file HOSTS e configurare le opzioni di progetto in Visual Studio 2017 per usare il nome di dominio completo (FQDN) per il test/debug. A tale scopo, seguire questa procedura:

  • Aggiungere una mappatura FQDN statica nel file HOSTS:

    1. Aprire un prompt dei comandi con privilegi elevati in Windows.

    2. Digitare il comando seguente:

      blocco note %WinDir%\system32\drivers\etc\hosts

    3. Aggiungere una voce simile alla seguente al file HOSTS:

      127.0.0.1 www.wingtiptoys.com

    4. Salvare e chiudere il file HOSTS.

  • Configurare il progetto di Visual Studio per utilizzare il nome di dominio completo (FQDN):

    1. Quando il progetto è aperto in Visual Studio 2017, fare clic sul menu progetto e quindi selezionare le proprietà del progetto. Ad esempio, puoi selezionare Proprietà di WebApplication1.
    2. Selezionare la scheda Web.
    3. Inserisci il FQDN per l'URL del progetto . Ad esempio, digita http://www.wingtiptoys.com se quello è il mapping FQDN che hai aggiunto al file HOSTS.
  • Configurare IIS Express per l'uso del nome di dominio completo per la tua applicazione.

    1. Aprire un prompt dei comandi con privilegi elevati in Windows.

    2. Digitare il comando seguente per passare alla cartella IIS Express:

      cd /d "%ProgramFiles%\IIS Express"

    3. Digitare il comando seguente per aggiungere l'FQDN all'applicazione:

      appcmd.exe set config -section:system.applicationHost/sites /+"[name='WebApplication1'].bindings.[protocol='http',bindingInformation='*:80:www.wingtiptoys.com']" /commit:apphost

    Dove WebApplication1 è il nome del progetto e bindingInformation contiene il numero di porta e il nome di dominio completo da usare per i test.

Come ottenere le impostazioni dell'applicazione per l'autenticazione Microsoft

Il collegamento di un'applicazione a Windows Live per l'autenticazione Microsoft è un processo semplice. Se non è già stata collegata un'applicazione a Windows Live, è possibile seguire questa procedura:

  1. Vai a https://go.microsoft.com/fwlink/?LinkID=144070 e immetti il nome e la password del tuo account Microsoft quando richiesto dal sistema, quindi fai clic su Accedi:

  2. Seleziona Aggiungi un'app, inserisci il nome della tua applicazione quando richiesto, quindi clicca su Crea:

    Immagine dell'aggiunta di un'app

  3. Seleziona la tua app sotto Nome e si apre la relativa pagina delle proprietà dell'applicazione.

  4. Immettere il dominio di reindirizzamento per l'applicazione. Copia l'ID applicazione e, sotto Segreti dell'applicazione , seleziona Genera Password . Copiare la password visualizzata. L'ID dell'applicazione e la password sono l'ID client e il segreto del client. Selezionare Ok e quindi Salva.

    Immagine delle informazioni sul dominio di reindirizzamento

Facoltativo: disabilitare la registrazione locale

L'attuale funzionalità di registrazione locale di ASP.NET non impedisce ai programmi automatizzati (bot) di creare account membro; ad esempio, usando una tecnologia di prevenzione e convalida degli automatismi come CAPTCHA. Per questo motivo, è necessario rimuovere il modulo di accesso locale e il collegamento di registrazione nella pagina di accesso. Per farlo, aprire la pagina _Login.cshtml nel progetto e quindi commentare le righe per il pannello di accesso locale e il collegamento di registrazione. La pagina risultante dovrebbe essere simile all'esempio di codice seguente:

<!-- ko with: login -->
<hgroup class="title">
    <h1>Log in</h1>
</hgroup>
<div class="row-fluid">
    @*<section class="span7">
        <form>
            <fieldset class="form-horizontal">
                <legend>Use a local account to log in.</legend>
                <ul class="text-error" data-bind="foreach: errors">
                    <li data-bind="text: $data"></li>
                </ul>
                <div class="control-group">
                    <label for="UserName" class="control-label">User name</label>
                    <div class="controls">
                        <input type="text" name="UserName" data-bind="value: userName, hasFocus: true" />
                        <span class="text-error" data-bind="visible: userName.hasError, text: userName.errorMessage"></span>
                    </div>
                </div>
                <div class="control-group">
                    <label for="Password" class="control-label">Password</label>
                    <div class="controls">
                        <input type="password" name="Password" data-bind="value: password" />
                        <span class="text-error" data-bind="visible: password.hasError, text: password.errorMessage"></span>
                    </div>
                </div>
                <div class="control-group">
                    <div class="controls">
                        <label class="checkbox">
                            <input type="checkbox" name="RememberMe" data-bind="checked: rememberMe" />
                            <label for="RememberMe">Remember me?</label>
                        </label>
                    </div>
                </div>
                <div class="form-actions no-color">
                    <button type="submit" class="btn" data-bind="click: login, disable: loggingIn">Log in</button>
                </div>
                <p><a href="#" data-bind="click: register">Register</a> if you don't have a local account.</p>
            </fieldset>
        </form>
    </section>*@
    <section class="span5">
        <h2>Log in using another service</h2>
        <div data-bind="visible: loadingExternalLogin">Loading...</div>
        <div data-bind="visible: !loadingExternalLogin()">
            <div class="message-info" data-bind="visible: !hasExternalLogin()">
                <p>
                    There are no external authentication services configured. See <a href="https://go.microsoft.com/fwlink/?LinkId=252166">this article</a>
                    for details on setting up this ASP.NET application to support logging in via external services.
                </p>
            </div>
            <form data-bind="visible: hasExternalLogin">
                <fieldset class="form-horizontal">
                    <legend>Use another service to log in.</legend>
                    <p data-bind="foreach: externalLoginProviders">
                        <button type="submit" class="btn" data-bind="text: name, attr: { title: 'Log in using your ' + name() + ' account' }, click: login"></button>
                    </p>
                </fieldset>
            </form>
        </div>
    </section>
</div>
<!-- /ko -->

Dopo aver disabilitato il pannello di accesso locale e il collegamento di registrazione, nella pagina di accesso verranno visualizzati solo i provider di autenticazione esterni abilitati:

Immagine di accesso solo tramite provider esterni