Как войти в систему CAS через Android - PullRequest
3 голосов
/ 09 января 2012

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

В любом случае, я пытаюсь войти в систему CASи я смог найти схему работы системы, которую я разместил ниже.

http://www.middleware.vt.edu/lib/exe/detail.php?id=middleware%3Acas%3Aprotocol&media=middleware:cas:cas_v1_authentication.png

Пока у меня есть следующий код:

DefaultHttpClient httpClient = new DefaultHttpClient();

    try {

        HttpGet httpGet = new HttpGet(LOGIN);

        HttpResponse response = httpClient.execute(httpGet);
        HttpEntity entity = response.getEntity();

        Log.i(TAG, "Login form get: " + response.getStatusLine());
        if (entity != null) {

            entity.consumeContent();
        }
        Log.i(TAG, "Initial set of cookies: ");
        List<Cookie> cookies = httpClient.getCookieStore().getCookies();
        if (cookies.isEmpty()) {

            Log.i(TAG, "THere are no cookies");
        }
        else {

            for (int i = 0; i < cookies.size(); i++) {

                Log.i(TAG, " - " + cookies.get(i).toString());
            }
        }

        HttpPost httpPost = new HttpPost(LOGIN);

        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair("username", "egaebel"));
        nvps.add(new BasicNameValuePair("password", "Under&round11"));

        httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

        Log.i(TAG, "The last header's value is.... " + response.getAllHeaders().length);

        response = httpClient.execute(httpPost);
        entity = response.getEntity();

        Log.i(TAG, "Login form get: " + response.getStatusLine());
        if (entity != null) {

            entity.consumeContent();
        }

        Log.i(TAG, "Post login cookies: ");
        cookies = httpClient.getCookieStore().getCookies();
        if (cookies.isEmpty()) {

            Log.i(TAG, "No Cookies");
        }
        else {

            for (int i = 0; i < cookies.size(); i++) {

                Log.i(TAG, " - " + cookies.get(i).toString());
            }
        }

        httpClient.getConnectionManager().shutdown();

Этот код не возвращает мне никаких ошибок, но он захватывает только один файл cookie, когда я думаю, что мне нужен еще один файл cookie CASTGC ......

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

Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 02 мая 2012

Вас интересует CAS RESTful API: https://wiki.jasig.org/display/CASUM/RESTful+API

RESTful API следует тому же базовому протоколу, что и исходный протокол CAS2, дополненный некоторыми дополнительными четко определенными URL-адресами ресурсов.Это особенно полезно для приложений, которым необходим программный доступ к CAS.

Надеюсь, это поможет.

0 голосов
/ 02 августа 2012

Работай!Мне просто нужно было пройти правильный SSL-сертификат и использовать Jsoup, как логически.Также были некоторые скрытые поля, которые я должен был получить, и некоторые файлы cookie, которые я должен был отслеживать, чтобы получить ответы ...

...