Estoy usando ASP.NET 5, En mi solución he API de Web, Servidor de Identidad y Angular 2 proyecto y estoy de autenticación Angular 2 cliente mediante el uso de la Identidad del Servidor, Angular 2 cliente consume la api de web por el paso de token de solicitud http y web api autenticar token y da respuesta, por esto he escrito un atributo personalizado que comprueba que el usuario está autenticado o no

Cuando puedo consumir la API estoy recibiendo siguiente excepción y Web API devuelve 500 error interno del servidor.

Sistema.InvalidOperationException: IDX10803: no se puede obtener la configuración de:»http://xx.xx.xx.x:3926/.well-known/openid-configuration‘. —> Sistema.IO.IOException: IDX10804: no se puede recuperar el documento de:»http://xx.xx.xx.x:3926/.well-known/openid-configuration‘. —> Sistema.AggregateException: Uno o más errores. —> Sistema.Net.Http.HttpRequestException: se produjo Un error durante el envío de la solicitud. —> Sistema.Net.WebException: no se puede conectar con el servidor remoto —> Sistema.Net.Sockets.SocketException: Un intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o la conexión establecida ya que el host conectado no ha podido responder xx.xx.xx.x:3926
en el Sistema.Net.Sockets.Zócalo.EndConnect(IAsyncResult asyncResult)
en el Sistema.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& dirección, ConnectSocketState estado, IAsyncResult asyncResult, Excepción& excepción)

¿Su webapi tener acceso a la identidad del servidor ? es decir, puede golpear la URL /.bien sabe/openid-configuración de la webapi medio ambiente ?
Gracias por la respuesta, Sí
Hemos creado un método de la api de que está obteniendo la configuración usando «/.bien sabe/openid-configuración» de la dirección URL. Se nos está dando una respuesta adecuada si tratamos de dar con este método api desde el navegador directamente, así como de otra aplicación (usando jquery ajax obtener la llamada)
Hay un proxy configurado en el sistema? Cuando se implementa la aplicación de IIS no tienen acceso a usuario configurado los servidores proxy. Tendrás que configurarlo en la OpenIdConnectOptions.BackchannelHttpHandler
Suena como que el servidor no está ejecutando o se ha desactivado el extremo de metadatos.

OriginalEl autor amol | 2016-06-08

7 Comentarios

  1. 11

    Si identityserver y el token de acceso de validación de middleware están alojados en la misma aplicación no es una condición de carrera en el inicio.

    La validación de middleware intenta cargar el documento de descubrimiento, que todavía no está disponible.

    En estos escenarios, el conjunto de la DelayLoadMetadata bandera en la validación de middleware a la verdad.

    Si deshabilitar la detección de extremo por completo, usted necesita configurar el emisor y el material de clave en las opciones de validación.

    Perfecto, ya esta resuelto mi problema. Gracias por la rápida respuesta. Ahora tengo mi autorización y autenticación incrustado dentro de mi servidor de recursos.
    Esta solucionado mi problema. Debe ser marcado como respuesta. Gracias!
    Donde es la Validación de Middleware?
    Se puede explicar de dónde establecer DelayLoadMetadata por favor? Me parece que no puede encontrar!
    Puede alguien por favor agregar la información de donde encontrar la configuración de «DelayLoadMetadata», gracias

    OriginalEl autor leastprivilege

  2. 4

    He utilizado algo como esto, y se resolvió mi problema.

    services.AddAuthentication(o => {
                o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })            
            .AddCookie(cfg => cfg.SlidingExpiration = true)
            .AddJwtBearer(cfg =>
            {
                cfg.Audience = "http://localhost:4200/";
                cfg.Authority = "http://localhost:5000/";
                cfg.RequireHttpsMetadata = false;
                cfg.SaveToken = true;
                cfg.TokenValidationParameters = tokenValidationParameters;
                cfg.Configuration = new OpenIdConnectConfiguration();  <-- Most IMP Part
            });
    

    OriginalEl autor Bharat

  3. 1

    Comprobar su appsettings.json ID del inquilino y asegurarse de que no copia accidentalmente más de lo que necesita para el ID del inquilino.

    OriginalEl autor Taraz

  4. 0

    He recibido este mensaje de error para un par de razones.
    Uno fue resuelto con @leastprivilege respuesta.
    Otra fue que mi certs-archivos en mi Servidor de Identidad del proyecto que se ha perdido en el control de versiones. Así que me acaba de reemplazar los archivos dañados con los originales y luego se trabajó.

    OriginalEl autor Martin Johansson

  5. 0

    La reconstrucción de mi SSO proyecto solucionado mi problema. Los paquetes de Nuget fueron restaurados así durante la reconstrucción del proyecto. Espero que esto ayude.

    OriginalEl autor Nurhak Kaya

  6. 0

    La razón de este error fue proxy y fue capaz de resolver por la aplicación del código a continuación:

    options.BackchannelHttpHandler = new HttpClientHandler()
                {
                    ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator,
                    Proxy = new WebProxy(Configuration["System:Proxy"])
                };
    

    Si usted está recibiendo «no se puede recuperar el documento de:» [pii está oculto]'» necesita agregar a continuación para ConfigureServices:

        public void ConfigureServices(IServiceCollection services)
                {
    ......
    IdentityModelEventSource.ShowPII = true;
        }
    

    Espero que esta ayuda.

    OriginalEl autor Stanley Okpala Nwosa

Dejar respuesta

Please enter your comment!
Please enter your name here