ユーザーにログインし、そのユーザーを で認証する 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
ます)。