2016-03-30 15 views
9

La mia configurazione dispone di 3 siti: Identity Server (Idp), host di autenticazione di Windows e il sito del client dell'utente finale. Sul sito del cliente, richiedo un controller decorato con [Authorize] e Identity Server.IDX10803: impossibile creare per ottenere la configurazione

L'host di Windows sulla porta 44305 sembra lanciare un'eccezione e il server di identità riceve uno stato 500. Posso accedere al sito host di Windows URL senza alcun problema. Ricevo un documento XML

Come faccio a eseguire il debug e scoprire qual è l'eccezione o l'errore che sta bloccando questo processo di autenticazione? Ottengo un'eccezione 3 parte con il più interno come la seguente

InvalidOperationException: IDX10803: Unable to create to obtain configuration from: 'https://localhost:44305/'. 

Microsoft.IdentityModel.Protocols.ConfigurationManager`1.<GetConfigurationAsync>d__3.MoveNext() in ConfigurationManager.cs 

The Host avvio OWIN Windows utilizza UseWindowsAuthenticationService

Il Server OWIN identità sta utilizzando AuthenticationOptions = WsFederationAuthenticationOptions

var wsFederationOptions = new WsFederationAuthenticationOptions 
      { 
       AuthenticationType = "windows", 
       Caption = "Windows", 
       SignInAsAuthenticationType = signInAsType, 
       MetadataAddress = "https://localhost:44305/", 
       Wtrealm = "urn:idsrv3" 
      }; 
      app.UseWsFederationAuthentication(wsFederationOptions); 
     } 

Ecco le richieste e le risposte

Request URL:https://localhost:44315/ 
Request Method:GET 
Status Code:302 Found 
Response:Location:https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=... 

Request: https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=... 
Request Method:GET 
Status Code:302 Found 
Location:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b 

Request URL:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b 
Request Method:GET 
Status Code:500 Internal Server Error 

Non ho problemi SSL visibili. Con il mio browser, posso aprire tutte le pagine da diversi siti senza alcun preavviso. Aggiungo il mio cert di IIS Express localhost al CERT Root di fiducia.

risposta

1

Un altro sviluppatore del team ha aiutato a trovare il problema. L'host di autenticazione di Windows in esecuzione sulla porta 44305 era anonimo disabilitato. Quando è stato abilitato, il processo reindirizzato ha ripreso a funzionare.

Purtroppo, non abbiamo rilevato l'errore, ma, tramite l'errore di prova & (hacking), è stato risolto. La mia domanda principale era come eseguire il debug di un'app OWIN in modo che potessi effettivamente vedere i dettagli di HTTP 500. Vorrei che i log di IdentityServer3 avessero potuto registrare la risposta dall'host Win Auth. Inoltre, perché non è un codice di risposta 401?

4

Dalla mia memoria, questo errore viene generato principalmente a causa del certificato di attendibilità/problema di accesso alla rete. Dato che stai eseguendo tutti i componenti nell'host locale, non è sicuramente un problema di rete. Presumo che tu stia correndo dall'ambiente VS Dev.

paio di cose:

  • Prova ospitare i componenti del server IIS
  • Invece di usare localhost, creare un certificato autofirmato per il vostro ospite e cercare di assegnare il nome host come nome soggetto (Si prega di nota - idsrv3test certificato per la firma e certificato auto-firmato per SSL ospite)

Inoltre, assegnare i permessi di leggere il certificato come descritto qui https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates

Se si verifica ancora questo problema, provare a monitorare il traffico tramite Wireshark (Fiddler non funzionerà in questo caso)

+0

Karthik, vorrei piacerebbe saperne di più sul monitoraggio del traffico. Sarei davvero grato se tu condividessi le pagine web che hai trovato utili per conoscere il monitoraggio. Si prega di condividere. – MADCookie

+1

@ MADCookie- Suppongo che tu stia monitorando il traffico di WireShark. Questo link fornisce un'introduzione molto breve a WireShark http://www.troyhunt.com/2013/04/the-beginners-guide-to-breaking-website.html (sotto la sezione - Cattura di pacchetti) – Karthik

1

Per scopi di test, ho aggiunto il blocco sottostante come primo pezzo di middleware nella mia pipeline. Questo registrerà effettivamente l'eccezione ogni volta che si verifica uno. Questo mi ha portato a vedere che il mio 500 in realtà era un 401.

7

Ho avuto lo stesso problema: sembra che il certificato SSL non fosse attendibile. Per risolvere questo problema, ho spostato il CERT di IIS Express "localhost" dal CertStore personale alle Autorità di certificazione radice attendibili e il problema era scomparso.

Cert

0

Potrebbe essere a causa di autenticazione proxy pure. Prova a controllare il traffico del violinista per login.microsoftonline.com:XXX e vedi se restituisce il codice di errore 407.

Se viene visualizzato il codice di errore 407, è necessario attivare l'autenticazione proxy nel web.config

6

Ho avuto questo problema, e aveva bisogno di considerare attendibile il certificato di cui al Robert Muehsig answer.

Ma questo da solo non è stato sufficiente. Uso l'autenticazione token bearer. Un po 'di ulteriori scavi ha rivelato che avevo bisogno di impostare il flag DelayLoadMetadata su true.

Quindi, a mio avvio Web API:

app.UseIdentityServerBearerTokenAuthentication(
    new IdentityServerBearerTokenAuthenticationOptions 
{ 
    DelayLoadMetadata=true 
}); 

Dopo questa ed il cambiamento certificato di fiducia ha cominciato a lavorare. So che questa non è la stessa configurazione del problema originale, ma durante la mia ricerca ho continuato ad imbattersi in questo post, quindi ho pensato di metterlo qui per chiunque altro si imbattesse in esso ...

+1

Grazie per aver postato questa risposta. Ha funzionato come un fascino. – daudihus

Problemi correlati