2014-09-17 3 views
0

J'ai modifié le code d'exemple Alamofire pour essayer de prendre en charge l'authentification Digest, mais je n'arrive pas à le faire fonctionner.Authentification Digest dans Swift avec Alamofire

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let detailViewController = segue.destinationViewController.topViewController as? DetailViewController { 
     func requestForSegue(segue: UIStoryboardSegue) -> Request? { 
      switch segue.identifier { 
       case "GET": 
        let user = "Administrator" 
        let password = "password" 

        let credential = NSURLCredential(user: user, password: password, persistence: .ForSession) 
        let protectionSpace = NSURLProtectionSpace(host: "172.16.0.56", port: 443, `protocol`: "https", realm: "myrealm", authenticationMethod: NSURLAuthenticationMethodHTTPDigest) 
        return Alamofire.request(.GET, "https://172.16.0.56") 
         .authenticate(usingCredential: credential, forProtectionSpace: protectionSpace) 
         .response {(request, response, _, error) in 
          println(response) 
       } 
       default: 
        return nil 
      } 
     } 

     if let request = requestForSegue(segue) { 
      detailViewController.request = request 
     } 
    } 
} 

Si je lance ce code, puis-je obtenir la réponse suivante:

Optional(<NSHTTPURLResponse: 0x7fa0c3525320> { URL: https://172.16.0.56/ } { status code: 401, headers { 
"Accept-Ranges" = bytes; 
"Cache-Control" = "no-cache"; 
Connection = "keep-alive"; 
"Content-Length" = 163; 
"Content-Type" = "text/html; charset=UTF-8"; 
Date = "Wed, 17 Sep 2014 16:45:29 GMT"; 
Expires = 0; 
Server = "MyServer"; 
"Www-Authenticate" = "Digest realm=\"myrealm\", nonce=\"4642875290551863156110287\", algorithm=\"MD5\", qop=\"auth\", stale=\"FALSE\""; 
} }) 

Il semble que Alamofire ne tente pas d'envoyer le nom d'utilisateur et mot de passe au serveur hashed avec le nonce retourné et Je viens d'obtenir la page «Non autorisé» du serveur. Est-ce qu'Alamofire est supposé faire l'authentification Digest en mon nom ou y a-t-il plus de code que j'ai besoin d'écrire moi-même?

Répondre

2
+0

oui j'ai essayé encore et tout a fonctionné. Je l'ai eu fonctionnant suivant la méthode d'authentification de base plutôt que ci-dessus. Vos tests d'authentification ont été utiles pour résoudre ce problème. Merci. J'ai encore des problèmes pour relier AlamoFire à mon projet, mais je vais poster cette question comme une autre question si j'ai toujours des problèmes. Merci – iphaaw

Questions connexes