質問

Windows認証を使用してIISでホストされているWebサイトがあります。 iPhone Webアプリケーションの1つでアクセスしようとしています。現在、このコードを使用していますが、機能していません。

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

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

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

私のWebアプリはWindows認証でホストされています。しかし、ここでは基本を使用しています。誰でも正しいhttpヘッダーを投稿できます。

ありがとう..

役に立ちましたか?

解決

主な違いは、認証対象のドメインとユーザー名とパスワードを指定する必要があると思います。このような何かが動作するはずです。簡潔にするために同期要求を使用しました。理想的には、ASINetworkQueueまたはNSOperationQueueを使用して要求を実行する必要があります。

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

これをテストするためにWindowsサーバーにアクセスすることはできませんが、過去にNTLMをテストしたことがあるので、動作するはずです...:)

他のヒント

Windows認証(NTLM)は、基本認証ほど単純ではありません。 NTLMはセキュリティをネゴシエートするために複数のwebrequestを必要とするため、ログインするために送信できる静的HTTPヘッダーはありません。

サードパーティの ASIHTTPRequestライブラリを使用して、NTLM over HTTP認証を実行できます。

NTLM認証をサポートしていると100%確信していませんが、NSUrlConnectionで connection:didReceiveAuthenticationChallenge メソッドを調査しましたか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top