Condividi tramite


Informazioni e debug del flusso di lavoro del gestore di autenticazioni Web (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Puoi usare il gestore di autenticazioni Web per abilitare il servizio Single Sign-On (SSO) per gli utenti ed eseguire facilmente l'autenticazione in un singolo servizio per più app di Windows Store. Il gestore di autenticazioni Web supporta i protocolli di autenticazione Internet OAuth e OpenID, pertanto puoi integrare la tua app con un servizio Web che fornisce l'autenticazione degli utenti. In questo modo puoi usare l'identità utente nelle app da servizi come Facebook, Flickr, Google e Twitter.

Quando un'app chiama il gestore di autenticazioni Web, l'utente accede a una finestra di dialogo in cui sono disponibili le pagine Web necessarie per l'accesso. Il provider del servizio deve permettere all'utente di autorizzare in modo esplicito questo tipo di autenticazione fornendo un'opzione del tipo "Rimani connesso". Il provider deve anche illustrare all'utente le modalità di trattamento delle identità, in genere offrendo un link all'informativa sulla privacy dalla pagina di accesso. Dopo il completamento di questi passaggi, la finestra di dialogo si chiude e l'utente continua con l'app.

Nel diagramma seguente viene mostrato un esempio di finestra di dialogo modale.

Esempio di finestra di dialogo per l'autenticazione dell'utente

Vantaggi del gestore di autenticazioni Web

Il gestore di autenticazioni Web offre i vantaggi seguenti:

  • Interfaccia di programmazione di facile utilizzo che consente allo sviluppatore di app di evitare di ospitare un controllo del browser all'interno dell'app.
  • Integrazione della pagina Web di un provider con un'interfaccia utente di Windows 8. Per ulteriori informazioni sui provider online, vedi Gestore di autenticazioni Web per provider online.
  • Credenziali utente isolate dall'app.
  • Supporto nativo per la modalità Single Sign-On con i provider online.

Come funziona il gestore di autenticazioni Web

Il gestore di autenticazioni Web è il gestore o il facilitatore tra la tua app e il servizio di autenticazione. È composto da un insieme di API, un gestore e un host Web. L'app usa le API per comunicare con il gestore. Il gestore crea un nuovo processo di hosting Web in un contenitore separato dell'app. Il gestore comunica con l'app, assembla l'interfaccia utente e controlla il ciclo di vita dell'host di autenticazione Web. L'host di autenticazione Web esegue il rendering delle pagine provenienti dal sito Web del provider di autenticazione online.

Lo schema seguente mostra il flusso delle informazioni quando viene usato un gestore di autenticazioni Web.

Flusso di dati del gestore di autenticazioni Web

Il flusso di lavoro tipico per l'uso del gestore di autenticazioni Web è il seguente:

  1. 1. L'app richiama il gestore di autenticazioni Web usando il metodo WebAuthenticationBroker.AuthenticateAsync, mentre tu provvedi a fornire un URI di richiesta iniziale e un URI di callback per quando viene completata la chiamata di autenticazione. Questi URI corrispondono a un URI dell'endpoint di autorizzazione e a un URI di reindirizzamento nel protocollo OAuth 2.0. Il protocollo OpenID e versioni precedenti del protocollo OAuth dispongono di concetti simili.
  2. Il gestore crea una finestra di dialogo di sistema che è modale all'app chiamante.
  3. Il gestore seleziona un contenitore di app dedicato non correlato all'app chiamante, né a qualsiasi altra app presente nel sistema ed elimina eventuali cookie permanenti. Nota  Il contenitore di app non viene mai condiviso tra due app contemporaneamente, a meno che il gestore non sia stato avviato in modalità Single Sign-On (SSO).  
  4. Il gestore avvia l'host di autenticazione Web nel contenitore di app selezionato.
  5. Il gestore associa la finestra dell'host alla finestra di dialogo che ha creato in precedenza. La finestra dell'host è responsabile del rendering del contenuto Web.
  6. L'host di autenticazione Web passa all'URI della richiesta, generalmente una pagina di accesso.
  7. Mentre l'utente interagisce con il sito Web del provider online facendo clic sui collegamenti o inviando informazioni, l'host verifica i singoli URI per trovare l'URI di callback corrispondente fornito dall'app e poi passare a quell'URI.
  8. Se lo trova, l'host termina l'esplorazione e lo segnala al gestore.
  9. Il gestore chiude la finestra di dialogo, elimina dal contenitore dell'app gli eventuali cookie persistenti creati dall'host e restituisce i dati del protocollo all'applicazione.

Funzionamento del servizio Single Sign-On con il gestore di autenticazioni Web

Per permettere l'uso del servizio Single Sign-On (SSO), il gestore di autenticazioni Web conserva i cookie persistenti in uno speciale contenitore per app SSO. Per usare questo contenitore, la tua app può chiamare l'overload del metodo AuthenticateAsync che non usa un URI di callback L'URL di reindirizzamento iniziale deve essere nel formato "ms-app://<SID>", dove <SID> corrisponde al SID del pacchetto chiamante. Puoi quindi registrare il SID di ognuna delle tue app nel servizio di autenticazione come URL di reindirizzamento valido (indicato anche come "endpoint di reindirizzamento").

Ad esempio, Fabrikam è lo sviluppatore di un'app di Windows Store che usa i servizi di Contoso. Durante la fase di sviluppo Fabrikam ha registrato la sua applicazione in Windows Dev Center, pertanto ha ricevuto un SID univoco. Fabrikam ha quindi registrato i SID delle app come URL di reindirizzamento validi nel servizio di autenticazione Contoso.com. Fabrikam ha registrato due dei SID come URL di reindirizzamento, uno dei quali era "ms-app://S-1-5-4321".

In fase di runtime, l'app di Windows Store di Fabrikam richiama il gestore di autenticazioni Web in modalità SSO. Nell'ambito dell'elaborazione della richiesta, Contoso.com verifica che l'URL di reindirizzamento sia incluso nell'insieme degli URL registrati. Dopo l'autenticazione da parte di Contoso, l'utente viene reindirizzato all'URL di reindirizzamento richiesto, alla fine del quale viene aggiunto il token di accesso "ms-app://S-1-5-4321?token=ABC". Quando il gestore di autenticazioni Web rileva un URL con questo formato, che corrisponde al SID dell'app chiamante, restituisce il token contenuto nella stringa di query o restituisce i dati all'app.

Se nel contenitore di app SSO sono già stati creati i cookie necessari, l'utente non deve ripetere l'accesso a Contoso. Se qualsiasi altra app tentasse di rappresentare l'app di Fabrikam, si verificherebbe un errore perché Contoso ha controllato l'identità dell'app assicurando che sia stato richiesto uno degli URL di reindirizzamento già registrati, mentre il gestore di autenticazione Web garantisce che solo l'app che condivide lo stesso SID di quella di Contoso esegua il reindirizzamento per ottenere i dati del protocollo.

Risoluzione dei problemi relativi al gestore di autenticazioni Web

Puoi procedere in diversi modi per la risoluzione dei problemi relativi alle API del gestore di autenticazioni Web per la tua app, ad esempio visualizzando i log operativi ed esaminando le richieste Web e le risposte con Fiddler.

Log operativi

Spesso, per identificare l'elemento problematico è possibile utilizzare i registri operativi. Il canale dedicato del registro eventi Microsoft-Windows-WebAuth\Operational permette agli sviluppatori di siti Web di comprendere la modalità di elaborazione delle proprie pagine Web da parte del gestore di autenticazione Web. Per abilitarlo, devi eseguire eventvwr.exe e abilitare il registro operativo in Registri applicazioni e servizi\Microsoft\Windows\WebAuth. Inoltre, il gestore di autenticazione Web aggiunge una stringa univoca alla fine della stringa dell'agente utente per identificarsi nel server Web. Tale stringa è "MSAuthHost/1.0". Ricorda che il numero di versione può cambiare in futuro, pertanto il tuo codice non deve dipendere da tale valore. Questo è un esempio di stringa dell'agente utente completa:

User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MSAuthHost/1.0)

Esempio di utilizzo dei registri operativi

  1. Abilita i registri operativi.
  2. Esegui l'applicazione di social networking di ContosoRegistri operativi WebAuth visualizzati nel Visualizzatore eventi
  3. Le voci di registro generate possono essere utilizzate per comprendere in maggior dettaglio il comportamento del gestore di autenticazione Web. In questo caso, tali voci possono includere:
    • Inizio esplorazione: registra l'avvio di AuthHost e contiene informazioni sugli URL di inizio e di fine.
    • Illustra in dettaglio l'inizio dell'esplorazione.
    • Completamento esplorazione: registra il completamento del caricamento di una pagina Web.
    • Tag META: registra il momento del rilevamento di un tag META, inclusi i dettagli.
    • Termine esplorazione: termine dell'esplorazione da parte dell'utente.
    • Errore di esplorazione: AuthHost rileva un errore di esplorazione per l'URL che include HttpStatusCode.
    • Fine esplorazione: rilevamento dell'URL di fine.

Uso di Fiddler con il gestore di autenticazioni Web

Il debugger Web Fiddler può essere utilizzato con le app di Windows 8.

  1. Poiché AuthHost viene eseguito nel proprio contenitore di app per garantire la funzionalità di rete privata, devi impostare una chiave del Registro di sistema: Versione dell'Editor del Registro di sistema di Windows 5.00

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\authhost.exe\EnablePrivateNetwork = 00000001

    •                      Data type
                           DWORD
  2. Aggiungi una regola per AuthHost in quanto esso genera il traffico in uscita.

    CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.a.p_8wekyb3d8bbwe
    CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.sso.p_8wekyb3d8bbwe
    CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.sso.c_8wekyb3d8bbwe
    D:\Windows\System32>CheckNetIsolation.exe LoopbackExempt -s
    List Loopback Exempted AppContainers
    [1] -----------------------------------------------------------------
        Name: microsoft.windows.authhost.sso.c_8wekyb3d8bbwe
        SID:  S-1-15-2-1973105767-3975693666-32999980-3747492175-1074076486-3102532000-500629349
    [2] -----------------------------------------------------------------
        Name: microsoft.windows.authhost.sso.p_8wekyb3d8bbwe
        SID:  S-1-15-2-166260-4150837609-3669066492-3071230600-3743290616-3683681078-2492089544
    [3] -----------------------------------------------------------------
        Name: microsoft.windows.authhost.a.p_8wekyb3d8bbwe
        SID:  S-1-15-2-3506084497-1208594716-3384433646-2514033508-1838198150-1980605558-3480344935
    
  3. Aggiungi una regola firewall per il traffico in ingresso in Fiddler.

Per ulteriori informazioni, vedi il blog sull'uso del debugger Web Fiddler con le app di Windows Store.

Argomenti correlati

Gestore di autenticazioni Web per i provider online

Esempio di gestore di autenticazioni Web

Windows.Security.Authentication.Web