Quiero solicitar informes de terceros y de que se requieren «la Autenticación de Acceso Básica», a través de correo:

Your client application must use Basic Access Authentication 
to send the user name and password.

Puede que alguien me apunte en la dirección correcta?

Edit: me hizo ver este post pero hay dos respuestas y no estoy seguro de si eso es lo que tengo que hacer o cual es el método preferido.

2 Comentarios

  1. 6

    Asumiendo que usar un WebRequest, se adjunta un CredentialCache a su solicitud:

            NetworkCredential nc = new NetworkCredential("user", "password");
            CredentialCache cc = new CredentialCache();
            cc.Add("www.site.com", 443, "Basic", nc);
    
    
            WebRequest request = WebRequest.Create("https://www.site.com");
            request.Credentials = cc;
            request.PreAuthenticate = true;
            request.Method = "POST";
    
            //fill in other request properties here, like content
    
            WebResponse respose = request.GetResponse();
    • Esto es lo que quieres, la aceptó respuesta en ese post es hacer las cosas de la manera más difícil, pero que puede ser necesaria para lo que está haciendo. Tenga en cuenta que si usted está usando un proxy, usted necesita para enviar credenciales separadas por medio de la petición.Proxy.Credenciales También si se utiliza un proxy, usted puede o no puede ser capaz de utilizar PreAuthenticate. Además, no necesariamente tiene que hacer CredentialCache, sólo puede establecer solicitud.Credenciales = nc; No estoy seguro de cuál es la diferencia.
    • con el Básico, no hay ninguna diferencia entre el nc y cc. Con Digerir la caché hace lo correcto: sólo se negocia el compendio de una vez, entonces se pre-se autentica con un nuevo aumento de la ‘nc’ (la síntesis nc, no la red de cred en mi ejemplo), evitando así la extra de ida y vuelta. Por lo tanto creo que es mejor a tener el hábito de usar la caché en lugar de la red creds.
  2. 2

    El punto básico es este:

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.Method = WebRequestMethods.Http.Get;
    request.Credentials = new NetworkCredential(username, password);

    pero a veces hay problemas con el uso de solicitud de credenciales, la alternativa es agregar los datos de autenticación en los encabezados de solicitud

    string authInfo = username + ":" + password;
    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
    request.Headers["Authorization"] = "Basic " + authInfo;

    para más detalles, consulte esta entrada del blog

    http://charlie.cu.cc/2012/05/how-use-basic-http-authentication-c-web-request/

Dejar respuesta

Please enter your comment!
Please enter your name here