![](/img/trans.png)
[英]Authenticating users via Active Directory programmatically on REST service API call
[英]Authenticating with Active Directory via Kerberos
我正在构建一个需要不同级别身份验证的Android应用程序,我想使用Active Directory这样做。
根据我的阅读,使用Kerberos是微软建议的方式。 我该如何为Android做这个? 我看到了javax.security.auth
doc ,但它没有告诉我太多。
我还看到某个地方Kerberos不包含用户组 - 这是真的吗? 在那种情况下,我是否必须以某种方式组合LDAP?
编辑
这里的主要目标是实现与活动目录的LDAP连接,以便对企业Android应用程序进行身份验证并为用户提供正确的权限。 这里的真正障碍是Google将许多Java Web Services API从它的端口遗漏到了android。 (即javax.naming
)此外,Android jar中的许多连接机制似乎只包含在遗留代码中,实际上它们实际上什么都不做。
我在编写代码时使用我的Kerberos服务器进行身份验证时发现这里的文档非常有用。 这是我如何使用我的kerberos服务器进行身份验证,但您可能需要为您调整它(因此我包括链接):
public static final int REGISTRATION_TIMEOUT = 30 * 1000; // ms
private static DefaultHttpClient httpClient;
private static final AuthScope SERVER_AUTH_SCOPE =
new AuthScope("urls to kerberos server", AuthScope.ANY_PORT);
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;
}
public static boolean authenticate(String username, String password)
{
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 = resp.getStatusLine().getStatusCode() != 403
}
catch(IOException e){
Log.e("TAG", "IOException exceptions");
//TODO maybe do something?
}
return authWorked;
}
你看过使用JCIFS吗? 基于这些问题[1] [2]和本网站 ,JCIFS在Android下运行。 JCIFS站点有一个简单的NTLM Authenticator示例 ,可以帮助您入门。 但是,根据此Samba列表消息 ,您将需要使用LDAP和自定义代码来获取用户的组。
从Oracle学习本教程。 我的代码喜欢魅力。 希望一切都包含在Android的VM发行版中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.