Question

J'ai un site Web hébergé sur IIS avec authentification Windows. J'essaie d'y accéder via l'une de mes applications Web pour iPhone. Actuellement, j'utilise ce code, mais cela ne fonctionne pas.

NSString * authString = [[[NSString stringWithFormat: @ ""% @:% @ "," "@," myusername "," & "; mypassword"] dataUsingEncoding: NSUTF8StringEncoding] base64.

authString = [NSString stringWithFormat: @"Basic %@", authString];

**[requestObj setValue:authString forHTTPHeaderField:@"Authorization"];**

mon application Web est hébergée avec l'authentification Windows. mais ici j'utilise basique. Quelqu'un peut-il poster quel est l'en-tête http correct?

Merci ..

Était-ce utile?

La solution

Je pense que la principale différence est que vous devez spécifier le domaine sur lequel vous vous authentifiez, ainsi que le nom d'utilisateur et le mot de passe. Quelque chose comme ça devrait marcher. J'ai utilisé une demande de concision synchrone. Idéalement, vous devez utiliser un ASINetworkQueue ou un NSOperationQueue pour exécuter la demande.

NSString *username = @"test";
NSString *password = @"test";
NSString *domain = @"test";
NSURL *url = [NSURL URLWithString:@"http://myurl"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setUseSessionPersistence:YES];
[request setUsername:username];
[request setPassword:password];
[request setDomain:domain];
[request start];
if ([request error]) {
    if ([[request error] code] == ASIAuthenticationErrorType) {
        //Authentication failed
    }
} else {
    NSLog([request responseString]);
}

Je n'ai pas accès à un serveur Windows pour tester cela, mais j'avais déjà testé NTLM, donc ça devrait fonctionner ...:)

Autres conseils

L’authentification Windows (NTLM) n’est pas aussi simple que l’authentification de base. NTLM nécessite plusieurs requêtes Web pour négocier la sécurité. Par conséquent, vous ne pouvez pas envoyer d’en-tête HTTP statique pour vous connecter.

Vous pouvez utiliser la librairie tierce pour effectuer l'authentification NTLM sur HTTP.

Je ne suis pas sûr à 100% qu'il prend en charge l'authentification NTLM, mais avez-vous déjà étudié la connexion : didReceiveAuthenticationChallenge sur la connexion NSUrlConnection?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top