11
我正尝试创建一个使用现有Web服务的Android应用程序。但是,现有的Web服务使用Kerberos进行身份验证,并且我无法使用android-xmlrpc库对服务进行身份验证。如果有人有这方面的经验,请回复。使用Kerberos进行Android验证
我对这种东西是全新的,所以任何建议将不胜感激!
谢谢, 戴夫
我正尝试创建一个使用现有Web服务的Android应用程序。但是,现有的Web服务使用Kerberos进行身份验证,并且我无法使用android-xmlrpc库对服务进行身份验证。如果有人有这方面的经验,请回复。使用Kerberos进行Android验证
我对这种东西是全新的,所以任何建议将不胜感激!
谢谢, 戴夫
的information这里帮助我让我的Android应用程序使用Kerberos工作。这是我正在开发的一个项目的link。它做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;
}
这将是有益的,如果你描述的内容,_exactly_您的问题。你有什么尝试?你能给一些代码示例吗?您是否首先使用xmlrpc进行身份验证? ... – Fildor 2011-11-06 10:55:30