Los rieles diseñan http autenticando el móvil -- android campo con ruby-on-rails campo con devise campo con http-post campo con http-authentication camp Relacionados El problema

rails Devise http authenticating mobile


4
vote

problema

Español

Estoy tratando de autenticar una aplicación de cliente de Android a la aplicación de Ruby On Rails, que usa la gema de Device. Pero he intentado la autenticación HTTP, y publicar solicitudes para autenticarse, y el servidor solo responde a 200 para cualquier nombre de usuario / contraseña,

Ya he configurado el Config.http_Authenticatable = True y The: Database_Authenticable en el modelo de usuario ...

Publicaré mi método de autenticación para que los ustedes puedan echarle un vistazo a él ...

  public static boolean authenticate(User user, String verb) throws IOException, JSONException {      DefaultHttpClient httpClient = new DefaultHttpClient();     HttpPost httpPost = new HttpPost(verb);       CredentialsProvider credProvider = new BasicCredentialsProvider();      credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),             new UsernamePasswordCredentials(user.getMail(), user.getPassword()));      httpClient.setCredentialsProvider(credProvider);      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();       nameValuePairs.add(new BasicNameValuePair("email", user.getMail()));       nameValuePairs.add(new BasicNameValuePair("password", user.getPassword()));       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));      HttpResponse httpResponse = httpClient.execute(httpPost);       int statusCode = httpResponse.getStatusLine().getStatusCode();     //JSONObject resp = null;       if (statusCode < 200 || statusCode >= 300){         throw new IOException("Error");      }       return true; }   
Original en ingles

I'm trying to authenticate an android client app to my server ruby on rails app which uses Devise gem. But I've tried http authentication, and post requests to authenticate, and the server just responds 200 for any given username/password.

I've already set up the config.http_authenticatable = true and the :database_authenticable at the user model...

I'll post my authenticate method so u guys can have a look on it...

public static boolean authenticate(User user, String verb) throws IOException, JSONException {      DefaultHttpClient httpClient = new DefaultHttpClient();     HttpPost httpPost = new HttpPost(verb);       CredentialsProvider credProvider = new BasicCredentialsProvider();      credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),             new UsernamePasswordCredentials(user.getMail(), user.getPassword()));      httpClient.setCredentialsProvider(credProvider);      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();       nameValuePairs.add(new BasicNameValuePair("email", user.getMail()));       nameValuePairs.add(new BasicNameValuePair("password", user.getPassword()));       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));      HttpResponse httpResponse = httpClient.execute(httpPost);       int statusCode = httpResponse.getStatusLine().getStatusCode();     //JSONObject resp = null;       if (statusCode < 200 || statusCode >= 300){         throw new IOException("Error");      }       return true; } 
              

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

Si el servidor está respondiendo a 200, realmente suena como la configuración del lado del servidor, por lo que debe verificar que las URL se aseguren en realidad, utilizando un navegador web de escritorio y una herramienta como Fiddler para que pueda ver todo. Preste especial atención a los encabezados de autenticación y los códigos de estado; Al menos, debe ver un 401 del servidor para comenzar las cosas.

También puede activar los diagnósticos para Apache HTTP en su dispositivo, y también descargará los encabezados y el contenido para Logcat, para que pueda asegurarse de que todo esté procediendo.

Revise los contenidos de WWW-AUTNENTICATE HEADER, especificará qué esquemas se aceptan. El lado del cliente volverá a solicitar la URL, pero pondrá el encabezado de autorización en su solicitud.

En resumen, asegúrese de que su lado del servidor funcione fuera de su aplicación, en un entorno que sea más fácil de solucionar problemas.

Lado del cliente, parece que solo está activando la autenticación básica (¡todos dejan de usarlo!), Y su punto final solo puede querer digerir o NTLM o Kerberos o cualquier otro esquema de autenticación que básico . Dado que parece que no configuró para SSL, sin duda use al menos DIGEST o tenga problemas de texto claros.

Uso de las variables de formulario (para la autenticación) solo funciona a nivel de aplicación, y no el nivel de protocolo HTTP, que utiliza encabezados HTTP (WWW-AUTNENTICATE, AUTORIZACIÓN) y códigos de estado (401, 403) para el proceso de autenticación. Y nuevamente, si no está configurando su servidor (y cliente) para SSL, solo habrá problemas de texto claros.

 

If server is responding 200, it really sounds like server side configuration, so you should double-check your URLs are actually secured, using a desktop web browser and a tool like Fiddler so you can see everything. Pay particular attention to the Authentication headers, and the Status codes; at the least you should see a 401 from the server to start things off.

You can also turn on diagnostics for Apache HTTP on your device, and it will also dump headers and content to LOGCAT, so you can make sure everything is proceeding.

Check the WWW-Autnenticate header's contents, it will specify which schemes are accepted. The client side will re-request the URL, but it will put the Authorization header into its request.

In short, make sure your server side works outside of your application, in an environment that's easier to troubleshoot.

Client side, it looks like you are only activating BASIC authentication (everyone stop using it!), and your endpoint may only want DIGEST or NTLM or KERBEROS or any other authentication scheme than BASIC. Since it looks like you didn't set up for SSL, certainly use at least DIGEST or you have clear text issues!

Using form variables (for authentication) only works at the application level, and not the HTTP protocol level, which uses HTTP Headers (WWW-Autnenticate, Authorization) and Status codes (401, 403) for the authentication process. And again, if you aren't configuring your server (and client) for SSL-only, there will be clear text problems.

 
 

Relacionados problema

3  ¿Autenticación automática utilizando JavaScript?  ( Automatic authentication using javascript ) 
Solo para dar un fondo, nuestra aplicación web implica conectarse a un flujo de la cámara de red. Ahora, la cámara tiene una opción para la seguridad, por lo ...

0  NsurlConnection SendsynchonousRequest que requiere autenticación en URL  ( Nsurlconnection sendsynchronousrequest that requires authentication in url ) 
De esta pregunta. He implementado la carga de un archivo a un servidor: Subir archivo en servidor Estaba leyendo la documentación de Apple para averiguar ...

1  Métodos de API de REST DE AUTENTICACIÓN HTACCESS  ( Htaccess authentication rest api methods ) 
Tengo un servicio de API de descanso construido usando CakePHP y necesito proteger algunos de mis métodos utilizando la autenticación HTTP. Por ejemplo, tengo...

53  ¿Cómo puedo obtener el nombre de usuario autenticado en Apache usando la autenticación http simple y PHP?  ( How can i get the authenticated user name under apache using plain http authenti ) 
primero, obtenga las consideraciones de seguridad fuera del camino. Estoy usando una autenticación sencilla en Apache para un único uso interno, sin conexión ...

5  problemas de IIS7 y Autenticación  ( Iis7 and authentication problems ) 
Tengo un sitio web ASP.NET estándar de valores, desplegado a nuestro equipo de desarrollo (máquina interna en nuestra sala de servidores). Ahora, este sitio...

2  HTTP BASIC AUTH, LECTURA ARCHIVO DE CONTRASEÑA Y RENDIMIENTO  ( Http basic auth reading password file and performance ) 
Tengo curiosidad por saber cuáles son los impactos de desempeño del uso de HTTP Basic Auth en un servidor web como Apache o Lighttpd o Nginx. Me imagino que e...

40  ¿Puedo usar la autenticación básica HTTP con Django?  ( Can i use http basic authentication with django ) 
Tenemos un sitio web que se ejecuta en Apache, acceso al que tiene una serie de páginas estáticas protegidas a través de la autenticación básica HTTP. He es...

3  Problema con los servicios de autenticación e informes de formularios  ( Problem with forms authentication and reporting services ) 
Tengo un entorno de producción de trabajo de SQL Server Reporting Services 2008 que está configurado para la autenticación de formularios. He estado tratando ...

0  ¿Autenticación CGI a través de Script PHP?  ( Cgi authentication via php script ) 
Estoy tratando de averiguar si hay alguna forma de auténtica en un script de CGI. Quiero que mi script pueda buscar XML ubicado a través de adress.com/admin....

1  Autenticación personalizada para IIS Hosted WCF Services?  ( Custom authentication for iis hosted wcf services ) 
Tengo un servicio WCF (v3.5 con webhttpbinding) alojado en IIS 6. Me gustaría implementar la autenticación personalizada antes de que alguien pueda acceder al...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos