none
Como pasar un token a un EndPoint RRS feed

  • Pregunta

  • Hola

    Trabajo con ASP.Net Core 3.1 tengo implementada una web api, la estoy consumiendo desde un cliente Windosws Forms

    Obtengo token

    string urlToken = "https://localhost:44365/api/Token/";
    
                var usuarioDto = new UsuarioDto()
                {
                    User = Utilidades.Cifrar(txtUser.Text),
                    Password = Utilidades.Cifrar(txtPassword.Text),
                    Tenant = Utilidades.Cifrar(Utilidades.LeerRegistro())
                };
    
                //primer parametro url
                //segundo parametro el objeto
                //tercer parametro el metodo: POST, GET, PUT, DELETE
                string resultado = Utilidades.Send<UsuarioDto>(urlToken, usuarioDto, "POST");


    Send

    public static string Send<T>(string url, T objectRequest, string method)
            {
                string result = string.Empty;
                try
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();
    
                    //serializamos el objeto
                    string json = Newtonsoft.Json.JsonConvert.SerializeObject(objectRequest);
    
                    //peticion
                    WebRequest request = WebRequest.Create(url);
                    //headers
                    request.Method = method;
                    request.PreAuthenticate = true;
                    request.ContentType = "application/json;charset=utf-8";
                    //request.Timeout = 10000; //esto es opcional
    
                    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
                    {
                        streamWriter.Write(json);
                        streamWriter.Flush();
                    }
    
                    var httpResponse = (HttpWebResponse)request.GetResponse();
                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        result = streamReader.ReadToEnd();
                    }
                }
                catch (Exception e)
                {
                    result = e.Message;
                }
    
                return result;
            }

    Ahora tento la necesidad de enviar el token a otro EndPoint por medio del headers

    if (!string.IsNullOrEmpty(resultado))
                {
                    string urlConn = "https://localhost:44365/api/Inquilino";
    
                    using (var cliente = new HttpClient())
                    {
                        cliente.DefaultRequestHeaders.Authorization =
                            new AuthenticationHeaderValue("Bearer", resultado);
                        //cliente.PostAsync(urlConn, )
                    }
                }

    Si ya tengo asignado el token ¿como le paso el token al endpoint urlConn?

    Saludos!


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 7 de julio de 2020 0:14

Respuestas

Todas las respuestas

  • hola

    No se usa el WebRequest, ya no se usa, cambilo por el HttpClient, para llamadas a webapi esta mucho mejor

    JWT authentication in ASP.NET Core using HttpClient

    analiza el titulo "ShowData() action of HomeController" como utiliza

    lient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

    para llamar al endpoint de token tambien deberias usar httpclient

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta EricRRModerator martes, 7 de julio de 2020 15:15
    • Marcado como respuesta Pedro Ávila martes, 7 de julio de 2020 15:50
    martes, 7 de julio de 2020 3:52
  • Hola Pedro Ávila, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.  

    Eric Ruiz

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    martes, 7 de julio de 2020 15:15
    Moderador
  • Hola @EricRR

    ¿Han sido útiles las  respuestas proporcionadas?  

    Si la respuesta ha sido la solución que esperaba.

    Gracias!


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 7 de julio de 2020 15:52