Как войти в эту систему CAS через Android

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

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

http://www.middleware.vt.edu/lib/exe/detail.php?id=middleware:cas:protocol&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", "MyUserName"));
        nvps.add(new BasicNameValuePair("password", "MyPassword"));
        
        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......

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

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


person Ethan    schedule 09.01.2012    source источник


Ответы (2)


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

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

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

person Misagh Moayyed    schedule 02.05.2012
comment
Спасибо за ответ, но на самом деле я только недавно заставил это работать с помощью Jsoup. - person Ethan; 13.05.2012

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

person Ethan    schedule 02.08.2012
comment
Не могли бы вы поделиться несколькими фрагментами кода, я тоже застрял в такой же ситуации. Я получил токен службы от CAS, как мне использовать его для получения данных от клиента cas - person Jeba Prince; 28.08.2017
comment
Довольно старый код, я не смотрел на него как минимум 3 года. Вам может помочь: github.com/egaebel/ VTAccess/blob/master/src/com/vtaccess/ - person Ethan; 31.08.2017
comment
Спасибо, я проверяю это. - person Jeba Prince; 04.09.2017