> On Apr 20, 2015, at 5:22 AM, Quinn The Eskimo! <[email protected]> wrote:
> 
> Having said that, you need to make sure you respond to the /right/ 
> challenges.  An authentication challenge handler should always have this 
> general structure:
> 
> - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task 
>    didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
>    completionHandler:(...))completionHandler
> {
>    if ([challenge.protectionSpace.authenticationMethod isEqual:xxx]) {
>        ... handle the xxx challenge ...
>    } else if ([challenge.protectionSpace.authenticationMethod isEqual:yyy]) {
>        ... handle the yyy challenge ...
>    } else {
>        completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, 
> nil);
>    }
> }
> 
> That is, you should specifically look for the challenges you care about and 
> handle those explicitly.  If you get a challenge you don't care about, 
> complete it with NSURLSessionAuthChallengePerformDefaultHandling.

Here’s what I got now:

> - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
>                             didReceiveChallenge:(NSURLAuthenticationChallenge 
> *)challenge
>                               completionHandler:(void 
> (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential 
> *))completionHandler {
>     if (self.usernameAndPassword && 
> ([challenge.protectionSpace.authenticationMethod 
> isEqual:NSURLAuthenticationMethodDefault] || 
> [challenge.protectionSpace.authenticationMethod 
> isEqual:NSURLAuthenticationMethodHTTPBasic] || 
> [challenge.protectionSpace.authenticationMethod 
> isEqual:NSURLAuthenticationMethodHTTPDigest] || 
> [challenge.protectionSpace.authenticationMethod 
> isEqual:NSURLAuthenticationMethodNTLM])) {
>         // Password-based authentication
>         completionHandler([challenge.proposedCredential 
> isEqual:self.usernameAndPassword] ? 
> NSURLSessionAuthChallengeRejectProtectionSpace : 
> NSURLSessionAuthChallengeUseCredential, self.usernameAndPassword);
>     } else {
>         completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, 
> nil);
>     }
> }

The URLs I’m testing on are: http://httpbin.org/basic-auth/hello/there and 
http://httpbin.org/digest-auth/auth/hello/there
When creating a credential with username “hello” and password “there,” the 
former URL succeeds (200) while the latter fails (401). It the “auth” in the 
latter URL the right choice? (…Just tried “auth-init,” also doesn’t work.)

— 
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com 


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/macnetworkprog/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to