0

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

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

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

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

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

ありがとう..

4

4 に答える 4

4

主な違いは、ユーザー名とパスワードだけでなく、認証対象のドメインを指定する必要があることだと思います。このようなものがうまくいくはずです。簡潔にするために同期リクエストを使用しました。理想的には、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をテストしたことがあるので、動作するはずです... :)

于 2009-05-08T12:03:57.667 に答える
1

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

于 2009-05-06T21:48:15.323 に答える
0

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

于 2009-05-08T00:40:00.160 に答える
0

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

于 2009-05-07T06:22:20.393 に答える