rails knock auth android ruby-on-rails devise http-post http-authentication

android - knock - carriles Diseña http autenticando el móvil



rails 5 api authentication (1)

Si el servidor responde 200, realmente suena como configuración del lado del servidor, por lo que debe verificar que sus URL estén realmente protegidas, usando 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 a los códigos de estado; al menos debería ver un 401 del servidor para comenzar las cosas.

También puede activar el diagnóstico de Apache HTTP en su dispositivo, y también volcará los encabezados y el contenido a LOGCAT, para asegurarse de que todo esté en marcha.

Verifique los contenidos del encabezado WWW-Autnentatizar, especificará qué esquemas son aceptados. El lado del cliente volverá a solicitar la URL, pero colocará el encabezado Autorización en su solicitud.

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

Del lado del cliente, parece que solo está activando la autenticación BÁSICA (¡todos dejan de usarlo!), Y su punto final solo querrá DIGEST o NTLM o KERBEROS o cualquier otro esquema de autenticación que BASIC . Dado que parece que no configuró para SSL, utilice al menos DIGEST o tenga problemas de texto sin cifrar.

El uso de variables de formulario (para la autenticación) solo funciona en el nivel de la aplicación, y no en el nivel del protocolo HTTP, que utiliza encabezados HTTP (WWW-Autnenticate, Authorization) y códigos de estado (401, 403) para el proceso de autenticación. Y nuevamente, si no está configurando su servidor (y cliente) solo para SSL, habrá problemas claros de texto.

Estoy intentando autenticar una aplicación cliente de Android en mi servidor Ruby on Rails, que usa la gema Devise. Pero probé la autenticación HTTP y las solicitudes de publicación para autenticar, y el servidor solo responde 200 por cualquier nombre de usuario / contraseña.

Ya configuré config.http_authenticatable = true y the: database_authenticable en el modelo de usuario ...

Voy a publicar mi método de autenticación para que ustedes puedan echarle un vistazo ...

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; }