Рельсы Разработать http аутентификацию мобильного телефона - PullRequest
4 голосов
/ 15 августа 2011

Я пытаюсь аутентифицировать клиентское приложение для Android на своем сервере ruby ​​on rails, которое использует Devise Gem.Но я пробовал http-аутентификацию и отправляю запросы на аутентификацию, и сервер просто отвечает 200 для любого заданного имени пользователя / пароля.

Я уже настроил config.http_authenticatable = true и: database_authenticableable atпользовательская модель ...

Я опубликую свой метод аутентификации, чтобы вы, ребята, могли взглянуть на него ...

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

1 Ответ

2 голосов
/ 24 октября 2011

Если сервер отвечает 200, это действительно звучит как конфигурация на стороне сервера, поэтому вам следует дважды проверить, действительно ли ваши URL защищены, используя веб-браузер на рабочем столе и инструмент, такой как Fiddler, чтобы вы могли видеть все. Обратите особое внимание на заголовки аутентификации и коды состояния; по крайней мере, вы должны увидеть 401 с сервера, чтобы начать работу.

Вы также можете включить диагностику для Apache HTTP на своем устройстве, а также выгрузить заголовки и контент в LOGCAT, чтобы вы могли убедиться, что все идет.

Проверьте содержимое заголовка WWW-Autnenticate, в нем будет указано, какие схемы принимаются. Клиентская сторона повторно запросит URL-адрес, но в свой запрос он добавит заголовок авторизации.

Короче говоря, убедитесь, что ваша серверная сторона работает за пределами вашего приложения, в среде, которую легче устранять.

Клиентская сторона, похоже, что вы активируете только BASIC-аутентификацию (все перестанут ее использовать!), И вашей конечной точке может потребоваться только DIGEST, NTLM, KERBEROS или любая другая схема аутентификации, кроме BASIC . Поскольку, похоже, вы не настроили SSL, обязательно используйте хотя бы DIGEST, или у вас есть проблемы с открытым текстом!

Использование переменных формы (для аутентификации) работает только на уровне приложения, а не на уровне протокола HTTP, который использует заголовки HTTP (WWW-Autnenticate, Authorization) и коды состояния (401, 403) для процесса аутентификации. И снова, если вы не конфигурируете свой сервер (и клиент) только для SSL, возникнут проблемы с открытым текстом.

...