web-dev-qa-db-fra.com

IDX10803: Impossible de créer pour obtenir la configuration

Ma configuration comprend 3 sites: Identity Server (Idp), Windows Authentication Host et mon site client utilisateur. Sur le site client, je demande un contrôleur décoré avec [Authorize] et Identity Server s’active. 

L'hôte Windows sur le port 44305 lève apparemment une exception et le serveur d'identité reçoit le statut 500. Je peux accéder à l'URL du site Windows hôte sans problème. Je récupère un document XML

Comment déboguer et savoir quelle est cette exception ou cette erreur qui arrête ce processus d'authentification? Je reçois une exception en 3 parties avec le plus intérieur comme suit

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

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

Le démarrage de Windows Host OWIN utilise UseWindowsAuthenticationService

Identity Server OWIN utilise AuthenticationOptions = WsFederationAuthenticationOptions

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

Voici les demandes et les réponses

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

Je n'ai aucun problème SSL visible. Avec mon navigateur, je peux ouvrir toutes les pages des différents sites sans avertissement. J'ajoute mon cert localhost IIS Express au cert. Racine approuvée.

19
MADCookie

Un autre développeur de l'équipe a aidé à trouver le problème. L’hôte d’authentification Windows fonctionnant sur le port 44305 a été désactivé de manière anonyme. Lorsque cela a été activé, le processus redirigé a recommencé à fonctionner. 

Malheureusement, l'erreur n'a pas été détectée, mais elle a été corrigée par essais et erreurs (piratage). Ma question principale était de savoir comment déboguer une application OWIN afin de voir les détails du HTTP 500. J'espère que les journaux IdentityServer3 auraient pu enregistrer la réponse de l'hôte Win Auth. Aussi, pourquoi n'est-ce pas un code de réponse 401? 

0
MADCookie

J'ai eu le même problème - il semble que le certificat SSL n'était pas fiable. Pour résoudre ce problème, j'ai déplacé le certificat Cert "localhost" IIS de Personal CertStore vers les autorités de certification racines de confiance et le problème avait disparu.

 Cert

15
Robert Muehsig

J'ai eu ce problème, et avait besoin de faire confiance au certificat selon Robert Muehsig répondre .

Mais cela en soi ne suffisait pas. J'utilise l'authentification de jeton de support. Un peu plus de recherches ont révélé que je devais définir le drapeau DelayLoadMetadata sur true.

Donc, au démarrage de mon API Web:

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

Après cela et le changement de confiance du certificat, il a commencé à fonctionner. Je sais que ce n'est pas la même configuration que le problème initial, mais au cours de mes recherches, je n'arrêtais pas de lire cet article.

14
SteveL

De ma mémoire, cette erreur est principalement due au problème de confiance du certificat/d'accès au réseau. Étant donné que vous exécutez tous les composants dans l'hôte local, il ne s'agit certainement pas d'un problème de réseau. Je suppose que vous utilisez l'environnement VS Dev. 

Couple de choses:

  • Essayez d’héberger les composants sur le serveur IIS 
  • Au lieu d'utiliser localhost, créez un certificat auto-signé pour votre hôte et essayez d'attribuer votre nom d'hôte comme nom de sujet (notez-le: certificat idsrv3test pour la signature et certificat auto-signé pour l'hôte SSL)

En outre, attribuez des autorisations pour lire le certificat comme décrit ici https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates

Si vous rencontrez toujours ce problème, essayez de surveiller le trafic via Wireshark (Fiddler ne fonctionnera pas dans ce cas).

4
Karthik

À des fins de test, j'ai ajouté le bloc ci-dessous en tant que premier middleware de mon pipeline. Cela enregistrera l'exception à chaque fois qu'elle se produira. Cela m'a amené à voir que mon 500 était en fait un 401.

        appBuilder.Use(async (context, next) =>
        {
            try
            {
                await next();
            }
            catch(Exception ex)
            {
                Log.Error(ex, "OWIN error.");
            }

        });
2
thekip

Mon équipe a rencontré les problèmes suivants: [Erreur] Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: une exception s'est produite lors du traitement du message . System.InvalidOperationException: IDX10803: Impossible d'obtenir la configuration à partir de: ' https: // [votre domaine du serveur d'identité] /. bien connu/openid-configuration '. ---> System.IO.IOException: IDX10804: Impossible de récupérer le document à partir de: ' https: // [votre domaine du serveur d'identité]. Well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: une tentative de connexion a échoué car la partie connectée n'a pas répondu correctement après un certain temps, ou la connexion établie a échoué car l'hôte connecté n'a pas répondu ---> System.Net.Sockets .SocketException: une tentative de connexion a échoué car la partie connectée n'a pas répondu correctement après un certain délai ou la connexion établie a échoué car l'hôte connecté n'a pas répondu sur System.Net.Http.ConnectHelper.ConnectAsync (hôte de chaîne, port Int32, CancellationToken cancelToken) --- Fin de trace de pile d'exception interne ---

Nous avons passé beaucoup de temps à trouver la raison. Enfin, juste une erreur très simple, dans l’environnement UAT, la configuration du fichier hosts était incorrecte dans "C:\Windows\System32\drivers\etc". Les domaines définis dans le fichier hosts ne correspondent pas aux domaines liés dans IIS. 

0
ChinaHelloWorld

Cela pourrait aussi être dû à l'authentification par proxy. Essayez de vérifier le trafic du violoniste pour les appels à login.microsoftonline.com:XXX et voyez s'il renvoie 407 du code d'erreur.

Si vous voyez le code d'erreur 407, vous devez activer l'authentification du proxy dans web.config.

0
Venkatesh Muniyandi