ユーザーにログインし、そのユーザーを で認証する iOS アプリがありますappKey。didReceiveAuthenticationChallengeデリゲート メソッド onは、NSURLConnectionユーザー名/パスワードにNSURLCredential. ただし、 (2つではなく、1つの認証データのみ)NSURLCredentialのみでを作成するのに問題があります。キーのみをappKey使用してサーバーに認証の詳細を提供する方法はありますか?NSURLConnection
次のリクエストは、パスワードを指定せcurlずに を指定するだけで完全に機能します。appKey
curl -u <app key>: -H "Accept: application/json" https://dev.sitename.com/api/v1/webpage -v
これは、上記のcURL認証部分を Objective-C に変換した方法です。
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
// Authenticate the user with AppKey based on the credentials provided
if ([challenge previousFailureCount] == 0) {
NSURLCredential *credential = [NSURLCredential credentialWithUser:[keychainItem objectForKey:@"APP KEY"] password:nil persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
}
これは機能するはずですが、試行するたびに認証が失敗します。ご覧のとおり、passwordパラメーターを に設定しましたnil。また、両方のパラメーターを入力してみました。何も機能していないようです。
を使用してサーバーに1つのパラメーターのみを渡す方法についてのアイデアはありますNSURLConnectionか? デリゲート メソッドからエラー情報を取得する方法はありますかdidReceiveAuthenticationChallenge(私は認識していdidReceiveResponseます)。