Android аутентификация с помощью Kerberos - PullRequest
11 голосов
/ 25 августа 2010

Я пытаюсь создать приложение для Android, которое использует существующий веб-сервис. Однако существующий веб-сервис использует Kerberos для аутентификации, и у меня возникают проблемы с получением Android с использованием библиотеки android-xmlrpc для аутентификации в сервисе. Если у кого-то есть опыт, пожалуйста, ответьте.

Я совершенно новичок в такого рода вещах, поэтому любые советы будут с благодарностью!

Спасибо, Dave

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

информация помогла мне заставить мое приложение для Android работать с kerberos.Вот ссылка на проект, над которым я работаю.Это делает аутентификацию Kerberos.Вот соответствующий код:

UsernamePasswordCredentials creds =
  new UsernamePasswordCredentials(username, password);
DefaultHttpClient client = getHttpClient();
client.getCredentialsProvider().setCredentials(SERVER_AUTH_SCOPE, creds);

boolean authWorked = false;
try{
  HttpGet get = new HttpGet(AUTH_URI);
  HttpResponse resp = client.execute(get);
  authWorked = hasValidCookie();
}
/*catch(AuthenticationException e){
Log.e("TAG", "Auth exceptions");
//TODO maybe do something?
}*/
catch(IOException e){
  Log.e("TAG", "IOException exceptions");
  //TODO maybe do something?
}

Вот метод getHttpClient():

  public static DefaultHttpClient getHttpClient(){
    if(httpClient == null){
      httpClient = new DefaultHttpClient();
      final HttpParams params = httpClient.getParams();
      HttpConnectionParams.setConnectionTimeout(params, REGISTRATION_TIMEOUT);
      HttpConnectionParams.setSoTimeout(params, REGISTRATION_TIMEOUT);
      ConnManagerParams.setTimeout(params, REGISTRATION_TIMEOUT);
    }
    return httpClient;
  }

Вот hasValidCookie()

private static final String LOGIN_COOKIE_NAME = "CGISESSID";
private static boolean hasValidCookie(){
  for(Cookie cookie: getHttpClient().getCookieStore().getCookies()){
    if(cookie.getName().equals(LOGIN_COOKIE_NAME))
    {
      return true;
    }
  }
  return false;
}
0 голосов
/ 14 мая 2019

Существует Hypergate ( hypergate.com ), который является клиентом Kerberos для Android, позволяющим другим приложениям запрашивать билеты.Он использует стандартный API Android, что означает, что WebView и большинство браузеров работают без каких-либо изменений кода.Существует SDK, который позволяет вам легко интегрироваться, который будет управлять билетами для вас.

Отказ от ответственности: я инженер в Hypergate

...