2009-05-06 33 views
0

Windows認証を使用してIIS上でホストされているWebサイトがあります。私は自分のiPhone Webアプリケーションの1つにアクセスしようとしています。現在、私はこのコードを使用していますが、動作していません。IIS認証用のHTTP認証ヘッダー

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

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

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

私のWebアプリケーションはWindows認証でホストされています。しかしここで私は基本的なものを使っています。誰でも正しいHTTPヘッダーを投稿することができます。

ありがとう。

答えて

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をテストしている...

+0

ありがとうポケブ... これはうまくいっています...たくさんのthaanks ....しかし、私はWindowsサーバーからビデオを再生する必要があります。しかし、MPMovieplayerControllerは認証メカニズムをサポートしていません。何をすべきか??? – nbojja

+0

MPMoviePlayerControllerは、標準のNSURL *メソッドによるメディアの読み込みのみをサポートしています。サポートされている認証タイプをサーバーに追加することをお勧めしますが、NSURLConnectionとNTLM認証サーバー間でデータをプロキシするために、デバイス上で実行されるループバックHTTPサーバーを作成することができます。 – rpetrich

+0

この例では、非同期であるため、出力はログに出力されません。 '[request responseString]'が評価されると、要求がまだ処理中である可能性が高くなります。しかし、残りの部分は正常に動作しているようです。 – Ant

1

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

+0

:)は、問題の解決についてどんな考えを持っています... – nbojja

+0

基本認証を使用するのが最も簡単な方法です。 – David

+0

私のエンタープライズアプリケーションは既にホストされています...私は認証タイプを変更できません... – nbojja

0

第三者ASIHTTPRequest libraryを使用してHTTP認証でNTLMを実行できます。

+0

こんにちは... ASIHTTPRequestでNTLM認証を行う方法を教えてください。 ありがとう.. – nbojja

0

私は100%NTLM認証をサポートしていますが、NSUrlConnectionのconnection:didReceiveAuthenticationChallengeメソッドについて調査しましたか?

+0

yea ... didReceivedAuthenticationChallengeメソッドを確認しました。データをダウンロードするには問題ありません。私はビデオを再生しようとしています。 MPMoviePlayerControllerではうまく動作しません。 – nbojja