iOS アプリで HTTPS POST を使用して社内の REST サービスに接続しています。このサービスには、基本的な HTTP 認証が必要です。
HTTPHeader で認証パラメーターを渡そうとすると、サーバーから「エラー ドメイン = NSURLErrorDomain コード = -1202」というエラーが返されました。このサーバーの証明書は無効です。「oiam.XXXX.com」になりすましたサーバーに接続している可能性があり、機密情報が危険にさらされる可能性があります。" UserInfo=0x8d1de60 {NSErrorFailingURLStringKey= https://oiam.xxxx.com/NSLocalizedRecoverySuggestion=よろしいですかとにかくサーバーに接続しますか?,"
いくつかの質問を読みましたが、証明書をインストールする必要があるようです。私は iOS シミュレーターを使用しているため、証明書をインストールできませんでした。
NSURLConnectionDelegate プロトコルを使用しようとしたところ、接続が機能しました。
私が持っている唯一の問題は、ユーザー名パスワードを渡すこの方法です。安全ですか?値をエンコードする必要がないのはなぜですか? ヘッダーで HTTPS Basic 認証を行いながら値を渡すためのエンコードを行っていました。
-(void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge previousFailureCount]) {
[[challenge sender] cancelAuthenticationChallenge:challenge];
} else {
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username1"
password:@"password1"
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
}