Authenticating with Active Directory via Kerberos

后端 未结 4 2039
野的像风
野的像风 2021-02-05 18:00

I\'m working on building an android application which requires different levels of authentication, and I would like to do so using Active Directory.

From what I\'ve read

4条回答
  •  隐瞒了意图╮
    2021-02-05 18:17

    I found the documentation here to be really useful when I was writing my code to authenticate with my Kerberos server. Here's how I authenticate with my kerberos server, but you might need to tweak it for yours (hence me including the link):

    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;
      }
    

提交回复
热议问题