Reputation: 705
Does AFNetworking support NTLM authentication?
I know ASIHTTPRequest can do it, i'm trying to migrate to AFNetworking, but i have to be sure it will be able to deal with it.
I really searched the internet for this, but i was unable to find this exact answer.
Thank you all.
Upvotes: 5
Views: 1815
Reputation: 2444
Yes, AFNetworking does support NTLM authentication (or basically any authentication method) by providing a block-based response to authentication challenges in general.
Here's a code example (assuming operation
is a AFHTTPRequestOperation
, AFJSONRequestOperation
etc.). Before starting the operation set the authentication challenge block like this:
[operation setAuthenticationChallengeBlock:
^( NSURLConnection* connection, NSURLAuthenticationChallenge* challenge )
{
if( [[challenge protectionSpace] authenticationMethod] == NSURLAuthenticationMethodNTLM )
{
if( [challenge previousFailureCount] > 0 )
{
// Avoid too many failed authentication attempts which could lock out the user
[[challenge sender] cancelAuthenticationChallenge:challenge];
}
else
{
[[challenge sender] useCredential:[NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistenceForSession] forAuthenticationChallenge:challenge];
}
}
else
{
// Authenticate in other ways than NTLM if desired or cancel the auth like this:
[[challenge sender] cancelAuthenticationChallenge:challenge];
}
}];
Start or enqueue the operation as usual and that should do the trick.
This is basically the method Wayne Hartman describes in his blog applied to AFNetworking.
Upvotes: 6